2017-01-16 16 views
3

私のJavaコードに問題があります。大学で先生は、オンラインでのコード評価として「kiuwan」を使用するために私に尋ねた、彼は私のコードでこの問題を発見:[Java] [SQL]クエリのユーザー名とパスワードをハードコードしました

ハードコードの資格情報(ユーザー名/パスワード)のソースコードを読むすべての人に表示されます。 ハードコードされた資格情報で保護されたリソースが重要な場合、システムのセキュリティが損なわれる可能性があります。 ハードコードされた資格情報では、変更が困難です。ターゲットアカウントが侵害され、ソフトウェア が本番環境に配備されている場合は、コードの変更が必要となり、再配備が強制されます。 ソースコードにアクセスする必要は必ずしもないことに注意してください。攻撃者がJARファイルにアクセスする場合、 は、パスワードを回復するために解除することがあります。

そして、それは私の3つのquerysにこの問題を発見:

public static final String CHECK_USER = "SELECT nome FROM utenti WHERE nome=? AND password=?"; 
public static final String INSERT_USER = "INSERT INTO utenti (nome, password) VALUES (?, ?)"; 
public static final String CHECK_USER_NAME = "SELECT nome FROM utenti WHERE nome=?"; 

私はそれを解決することができますか?私はログインを行い、データベースをチェックするために、このようにして(テキストフィールドから情報を集めて)作った。

ありがとうございました!

+0

実際には、あなたのSQLクエリがどのように構造化されているか、あなたの接続資格情報について言及していませんが、おそらくあなたはクリアなユーザー名とパスワード情報を使ってハードコードされたデータベース接続を使用しています。コーディングの選択肢。あなたのような例は、http://stackoverflow.com/questions/11634379/username-password-etc-hardcoded-into-program-how-to-pick-them-up-from-a-file – Hayra

+0

になる可能性があります。 http://stackoverflow.com/questions/12937641/handling-passwords-used-for-auth-in-source-code –

答えて

4

あなたの先生がそれらの質問について話しているとは思わない。私は彼/彼女はあなたのコードがデータベース接続をどのように作成するかについて話していると思います。あなたはJavaコードにデータベースアカウントのユーザー名とパスワードをハードワイヤード接続していることを確認しました。

この簡単な解決策は、構成ファイルからデータベースアカウントの詳細を読み取ることです。ただし、構成ファイルを安全に保つという問題があります。

(なぜ私が?これだと思いますので、あなたは、データベースからではない...ソースコードまたはJARファイルからパスワードを読み込むについてのあなたの先生の話から引用されたテキスト。)については


レコード、それはまたデータベースにパスワードを格納するための悪い考えです。しかし、それはあなたの先生が話していることではありません。

パスワードをデータベースに格納しないようにする方法は、より困難です。一般的な解決策は、パスワードにシードされた暗号ハッシュを作成し、そのデータベースにという名前のを格納することです。しかし、元のパスワードを回復することはできません。あなたがそれをする必要がある場合、物事はセキュリティ上の観点からもっと「毛むくじゃら」します。

+0

"パスワードのシードされた暗号ハッシュを作成する" +1 – Sid

+0

"quoted text"はkiuwanからです(オンライン評価者)私の先生からではありません...とにかく私はそれを修正する方法がわかりません@Stephen C –

+0

@ClaudioCiociola - 1)あなたの先生(おそらく)は "キウワン"があなたに語っていることを支持します。 2)あなたは私たちにコードの関連部分を示していないので、どのように修正するかを教えてくれます。 (私がすでに言ったことを除いて、すなわち私の答えのパラグラフ2。) –

関連する問題