0

こんにちは、これがばかげた質問かもしれない場合は申し訳ありませんが、私は自分のサイトに sha+salt を試すつもりです。私のソルトをランダム化する方法を考えています。登録すると、両方がデータベースにハッシュされます。また、ユーザー検証のためにshaとsaltの両方を復号化する必要がありますか? 誰かが正しい検出または良い記事で私を指摘してくれたらいいのに. ありがとうまた、私はウェブサイトのセキュリティについては初めてです。現在、自分のサイトにどのセキュリティ実装を使用するかをまだ調査しています。これらは私がやっていることです。

  1. パスワードハッシュ
  2. アンチ SQL インジェクション
  3. URL の値を非表示にする

セキュリティに何を追加すればよいかもっと知りたいです。プロジェクトとして学校管理システムを作っています。

これまでのところ、私は調べています。ブルートフォース対策と私の教授が HTTPS に関するヒントを教えてくれました。

また、パスワードが sha+salt で暗号化されている場合、ログインを検証するにはどうすればよいですか。

4

3 に答える 3

2

これは非常に大きな質問なので、自分ですべてを説明しようとするよりも、役立つリソースを紹介した方がおそらく簡単です.

Web 暗号化の紹介については、A List Apartがすばらしい記事を書いています。実装についてはあまり説明していませんが、概要を説明しています。

セキュリティ上の欠陥のリストとそれらに対処する方法については、OWASP Top Ten Projectを参照してください。

これは、かなり包括的なPHP セキュリティのガイドです。

最後に、ログイン システムの作成の詳細については、この質問を参照してください。

あなたが持っているかもしれない質問に対するいくつかの良い答えがあるかもしれないので、スタックオーバーフローを検索することをお勧めします.

于 2012-08-26T12:35:13.827 に答える
1

ソルトは、エンコードしたい文字列のハッシュに追加された単なるランダムな文字列であるため、それを生成する方法は十分にあります [たとえばSO でこれ]。

sha [md5 など] はハッシュアルゴリズムであり、crypt関数ではありません。つまり、後で取得するために何かを隠すことを意図したものではないため、必要がなく、sha の結果を復号化することもできません。データベースからパスワードを読み取るために登録しているサイトの管理者。

ハッシュとは、データ セットの要素を別のデータ セットの短い要素に [ほぼ合計]単射的にマップすることです。任意の長い文字列を固定長のキーにマップします。これにより、実際に元の値。

hash( value1 ) = hash ( value2 ) => value1 = value2

私が言ったのは、ハッシュhash(value1) = hash(value2)アルゴリズムにはいくつかの衝突があるためです[たとえば、2つの値が同じであることを意味しないなど、前のステートメントの例外]-ソルトはこの点でも役立ちます。

これは、パスワードをdbに保存する方法です:

  • 塩を生成します。
  • 実際のパスワードの前にソルトを追加します。辞書攻撃を防ぐために、ソルトを pwd のに置くことが重要です。
  • 連結された文字列を適切なアルゴリズムでハッシュsha1します [例として選択しました];
  • 文字列とソルトの両方を db に保存します。

コード内:

$user -> salt = your_salt_generator();
$user -> hashedPwd = hash('sha1', $salt . $userChosenPwd);

$username/に対する Pwd チェック$passwordは次のとおりです。

  • $usernameデータベースから指定されたユーザーを取得します。
  • 存在する場合は、保存されたソルトと指定されたパスワードで上記のプロセスを使用し、保存されたハッシュと等しいかどうかを確認します。

コード内:

hash('sha1', $user -> salt . $sentPassword) == $user -> hashedPwd;

URL に値を隠すことについては、セキュリティよりも SEO / 読みやすさのトピックです。URL はルーティング時に作成する必要があります [ http://somesite.com/products/:idid 番目の製品にアクセスする場合など]。あなたのサイトに作成されました [私が今すぐに来ることができない完全にがらくたのケースに関係なく].


MySQL インジェクションに関しては、 PDO 拡張機能からステートメントを準備して以来、それらを取り除きました。

これについては何百万もの答えがありますので、見て回ってください。

あなたの仕事でそれを維持してください!

于 2012-08-26T12:41:37.073 に答える
1

あなたの質問に対する直接的な回答ではありませんが、phpass http://www.openwall.com/phpass/を調べてください。

それはあなたのためにソルティングを処理し、多くのセキュリティ専門家によってレビューされ、非常に優れたパスワードハッシュツールと見なされています

于 2012-08-26T12:42:47.397 に答える