タスク19:秘密

タスク:PHPでかなり安全な認証メカニズムを作成します。



方法1

ランダムシーケンスがフォームに送信され、サーバー側でSESSION_ID && S_KEYバンチのテーブルに保存されます。 クライアント側では、ビュー変換が実行されます

sha1(sha1(パスワード)+ S_KEY)。 sha1(パスワード)-データベース内の予想されるパスワードハッシュ、S_KEY-送信されたシーケンス。 その結果、サーバーに送信しても安全な刻々と変化するハッシュがあります。

サーバーでは、受信したハッシュがsha1(password_from_db + S_KEY)と比較されます。 一致する場合、ロードされたユーザークラスのインスタンスを変数$ _SESSION ['user']に追加します。



すべてがここでうまくできていますが、世俗的ではありません。



攻撃者は何ができますか?

1.セッションでCookieを盗みます。

2.トラフィックを傍受し、セッションを再度盗みます。



何が必要ですか?

セッションが反対側のユーザーに強くアタッチされていることを確認する必要があります。



IPは出力ではなく、置き換えることができます。 そして、NATの後ろに座っている人々のために、IPは共有されます。



どうする?

リモートポートを使用します。 原則として、ブラウザはサイトのポートを変更せず、長期間変更されません。 NATは、パケットを転送するために必要なため、ポートも変更しません。



注:この方法は、システムの重要な部分にのみ適用できます。 これは、ユーザーがセッション全体で静的ポートを保証しているわけではないため、方法1で十分です。



All Articles