2

私は自分のウェブサイトを開くための最後のステップにいますが、私を夢中にさせたのはphpユーザー管理だけです。これらのシステムの構築に関する多くのリソースを見つけたので、自分のやり方でシステムを記述できると信じています。問題は、セキュリティに関して言えば、何を使用すればよいかとてもおかしくなるということです. たとえば、機密情報を SSL 経由で送信する場合、攻撃者がハッキングできないように、登録フォームで情報が暗号化されていることを確認することを提案する人もいます。また、エラーが発生したときにデバッグメッセージが表示されないようにして、攻撃者がリンクなどをたどることができないようにすることを提案する人もいます。

あちこちで md5 はもう安全ではないことを読んでいるので、新しいユーザーのパスワードなどをどのようにハッシュするのか疑問に思っています...すでにユーザー管理を提供しているプログラマーへのリンクを見つけましたが、彼らがそうであるかどうかはわかりません私はセキュリティを優先事項として懸念しているので、十分ですCodeCanyon

では、私が注目しなければならないセキュリティ対策は何ですか? それに関連するリソースはありますか?

ありがとう、

4

4 に答える 4

4

人々が実装するように指示するさまざまなものの中から選択する必要はありません (すべきではありません)。優れたセキュリティは常に階層化されています。つまり、できるだけ多くの保護を実装する必要があります。このアプローチには複数の目的があります。各レイヤーは、さまざまな攻撃を防ぐことができます。各層は、異なる経験を持つ攻撃者を防ぐことができます。各レイヤーは、攻撃者に必要な時間を増加させる可能性があります。

認証システムに役立つヒントをいくつか紹介します。

  • デバッグ出力を表示しない
  • MD5 ハッシュを使用しないでください。SHA2 またはそれ以上、bcrypt の方がはるかに優れています
  • パスワードを保存するときにソルトを使用する
  • フォームでノンスを使用する (ワンタイム トークン)
  • サーバーとクライアントの間で常に SSL 暗号化を要求する
  • サーバー上のデータベースにアクセスするときは、情報漏洩やクライアント側の操作が不可能であることを確認してください (たとえば、インジェクション攻撃を避ける、データベース ドライバーで準備済みステートメントを使用するなど)。
  • タイミング攻撃を防ぐために、失敗したすべてのログイン (理由が何であれ) に同じ時間がかかることを確認してください。
  • ログインしているユーザーが危険な操作 (パスワードの変更、支払いなど) を開始した場合、ユーザーを再認証する
  • パスワードをクリアテキストで保存することは決してありません。
  • パスワードの最小限の複雑さを要求する
  • !!! PHPセッションを保護します(別の大きなトピックであり、独自の議論に値します)-

おわかりのように、できることはたくさんあります (そして、おそらくもっと多くの人があなたにもっと多くのことを教えてくれるでしょう)。実際に何をすべきかは、あなたが受け入れる意思のあるリスクによって異なります。ただし、単一のセキュリティ対策に依存するのではなく、常に階層化されたアプローチを使用してください。

于 2012-02-06T09:13:31.037 に答える
2

あなたの直接の質問に答える: MD5 には衝突があり、レインボー テーブルが浮かんでいることが証明されています ( Wikipediaを参照)。PHP にはかなりの数のハッシュ関数があり、それぞれに長所と短所があります。php.net のコメント セクションも参照してください。

一般的な Web アプリケーションのセキュリティに関しては、Web アプリケーションをより安全にするためのOWASP プロジェクトを参照することをお勧めします。まず、セキュリティの脆弱性のトップ 10 (青いボックス内の「トップ 10」) を確認することをお勧めします。

于 2012-02-06T08:59:10.627 に答える
1

パスワードの保存にsha1を使用し、入力フィールドとしてのSQLインジェクションとxssスクリプトを防ぎます。セッションハイジャック、固定化防止。

于 2012-02-06T08:57:36.033 に答える
1

最初に、SSL (TSL) 経由でデータをサーバーに送信する必要があります。これにより暗号化されます。また、サーバーに送信するフォームには CSRF 保護を使用する必要があります。

機能を実装して機能するようになったら、自分でサイトをハッキングしてみてください。フォームを介して SQL や JS を挿入したり、フォームが送信された後の日付を操作したり、サーバー設定が弱い場合に実行される可能性があるエラーを PHP エラー ログに書き込むこともできます。(http://en.wikipedia.org/wiki/Hardening_(コンピューティング))

パスワードをデータベースに保存するときは、シード付きハッシュ関数を使用します。誰かがデータベースをハッキングしてハッシュを取得できる場合、シードなしでは暗号化できません。

Google を介してすべてのテクニックに関する多くの情報を見つけることができます。

于 2012-02-06T09:00:05.190 に答える