PHPユーザ管理システム

私は自分のウェブサイトを開くための最後のステップですが、私を夢中にさせた唯一の事はPHPユーザー管理です。私はこれらのシステムを構築するための多くのリソースを見つけました。私は自分の方法でそれらを書くことができると信じています。セキュリティになると、私は何を持って行くのか気にしています。たとえば、SSLを介して機密情報を送信する場合、攻撃者がハッキングできないように、情報が登録フォームで暗号化されていることを確認することをお勧めします。また、攻撃者がリンクをリトレースできないように、エラーが発生したときにデバッグメッセージが表示されないようにすることをお勧めします。

今私がここから読んだところでは、md5はもう安全ではないので、私は新しいユーザーパスワードなどをハッシュする方法が不思議です...私はすでにいくつかのユーザー管理を提供しているプログラマーのリンクを見つけましたが、私は優先度としてセキュリティを心配しているので十分です。 CodeCanyon

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

ありがとう、

2

4 答え

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

認証システムに役立ついくつかのtippがあります。

  • デバッグ出力を表示しない
  • MD5ハッシュを使用しないでください。 SHA2以上、bcryptはもっと良いです。
  • パスワードを保存する際に塩を使用する
  • あなたのフォームにノンスを使用する(1回限りのトークン)
  • サーバーとクライアント間のSSL暗号化を常に要求する
  • サーバー上のデータベースにアクセスするときは、情報の漏洩やクライアント側の操作が不可能であることを確認してください(例: 注入攻撃を避け、データベースドライバを使用して準備する ステートメントなど)
  • タイミングの悪い攻撃を防ぐために、理由のいかんにかかわらずすべての失敗したログインに同じ時間がかかることを確認します。
  • ログインしているユーザーが危険な操作(pwd、支払いの変更など)を開始したときに、そのユーザーの再認証を行う
  • どこにでもパスワードをクリアテキストで保存しないでください
  • パスワードを複雑にする必要がある
  • !!!あなたのPHPセッションをセキュアにしましょう(独自の議論に値する別の大きな話題) -

あなたが見ることができるように、たくさんのことができます(もっと多くの人があなたにもっと多くのことを教えてくれるでしょう)。あなたが本当にすべきことは、あなたが受け入れようとするリスクによって決まります。しかし、決して単一のセキュリティ手段に頼ることはなく、常に階層化されたアプローチを持っています。

4
追加された
大きな応答をいただきありがとうございます ultimA 。懸念されるすべての問題をリストアップしていることがわかります。私はこれらすべての問題の解決策を探し続ける必要があると信じています。再度、感謝します。
追加された 著者 Digital site,
"すべての可能性のある問題をリストアップ" - ありがとうございますが、リストはどこにもありません。これらは単なる例であり、ブラウザの機能(HSTS、x-frame-basedなど)を使用して、良い絞り込みソースを使用して、スクリプト(引数とユーザー入力)へのすべての入力を確実に確認しながら、ログイン抑制、オプションなど)、おそらく私の心のATMに来ていないか、私が知りません他のものの束。
追加された 著者 ultimA,

直接の質問に答える:MD5に衝突があり、虹のテーブルが浮遊していることが証明されています(ウィキペディア)。 PHPにはいくつかのハッシュ関数が用意されていますがあり、それぞれ長所と短所があります。また、php.netのコメントセクションも見てください。

一般的なWebアプリケーションのセキュリティに関しては、 OWASP Webアプリケーションをより安全にすることに関するプロジェクトを提供します。良いスタートは、トップ10のセキュリティ上の恩恵(青いボックスの「トップテン」)。

2
追加された
コメントありがとう。非常に真実ですが、技術者がますます複雑になり、より良いMD5が得られるようになりました。ところで、OWASPに関するヒントをありがとう。それは素晴らしいシステムです。
追加された 著者 Digital site,
ところで、無料のユーザー管理ソフトウェア majordojo を見つけました。悪いことではありません。
追加された 著者 Digital site,

まず、SSL(TSL)を介してサーバーにデータを送信し、これが暗号化されます。また、サーバーに送信するフォームにCSRF保護を使用する必要があります。

When you have implemented your functions and they work you should try to hack your site by yourself. Try to inject SQL, JS through the forms, try to manipulate the date after the form was send, you can also try to produce erros that will be written to you PHP error log even that could be executed if your server settings are weak. (http://en.wikipedia.org/wiki/Hardening_(computing))

あなたのデータベースにパスワードを格納するときに、シードされたハッシュ関数を使用すると、誰かがデータベースをハックしてハッシュを得ることができれば、シードなしでそれらを暗号化することはできません。

あなたはGoogleを介してすべてのテクニックに関する多くの情報を見つけるでしょう。

1
追加された
@ tbaun89素晴らしいコメントをいただき、ありがとうございます。あなたはまったく正しいです、私は実装が非常に重要かどうかをテストすると信じていますので、どれくらい強いか弱いかを確認できます。
追加された 著者 Digital site,

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

1
追加された
コメントのおかげで、しかし、ultimAが述べたように、それは物事を確保するための非常に長い道のりです。
追加された 著者 Digital site,
簡単な質問だけでは、非常に良いと知られている完全かつ安全なシステムがあり、それは無料ではありません!
追加された 著者 Digital site,
ありがとう。私はb-cryptを使うほうがはるかに安全で安全なので、代わりにb-cryptを使う方が良いと思います。乾杯
追加された 著者 Digital site,
ありがとうsandeep。
追加された 著者 Digital site,
追加された 著者 sandeep,