2011-01-17 22 views
2

私はミッションクリティカルなWebサイトを運営していないので、業界の強みを求めているわけではありません。しかし、私は、ハードディスク上の偽のページを嘲笑い、不正なアクセスを試みるなどの基本的な攻撃から保護したいと考えています。フォーム提出が合法的な用途からのみ受け入れられるようにするための標準的な技術はありますか?PHPフォームを保護するにはどうすればよいですか?

+0

あなたがこれまでに得てきた答えは、良いものの、かなり広範囲です。質問をより具体的にすることができれば、より詳細な回答が得られるかもしれません。特に、あなたはどのような種類の許可を使用していますか?それは「偽のページを嘲笑」することによって回避できますか? –

+0

誰かがあなたのディスクにアクセスできるようになると、そのゲームは終了します。その時点でリモートコードが実行されます。標準的なテクニック?何に対して? OWASPを読んでください。 – rook

答えて

6

できません。あなたのページのユーザーから生成されたHTTP要求と、独自のWebページを持つ悪意のあるユーザーを区別する信頼できる方法はありません。

適切なパスワード認証方法を使用するだけで、誰もパスワードを知らない限り(HTTPリクエストの発信元に関係なく)誰もが何かを破壊することはできません。信頼できるサーバー側の認証を取得したら、このシナリオを気にしない非堅牢なフープを飛び越す時間を無駄にする必要はありません。

+0

@Ben:悪意のある攻撃者が回避するのは簡単です。 –

6

いくつかのテクニックが近づく:

  • は、すべてのフォームのフォームのキーを生成します。キーはデータベースレコードに関連し、ページビュー(userID、cookieなど)に関する他の何かに関連します。フォームキーは、そのユーザー/クッキーとフォームキーが一致しない場合は転記できません。キーは一度だけ使用され、自動ツールが(そのユーザーの)盗難されたキーを使用して再度ポストするのを防ぎます。
  • フォームキーは、共有秘密ハッシュにすることもできます。フォームを生成するPHPは、フォームがポストされたときなどに確認できるものなど、CookieとユーザーIDをハッシュできます。
  • ユーザーは確認が必要なキャプチャを追加できます。
  • 特定のフォームの自動不正使用を防ぐことができる、そのユーザー/ Cookieからの投稿の数を制限することもできます(スロットリング)。

フォームがディスクから転記されないことを保証することはできませんが、自動化の容易さを制限することはできます。

1

私もお勧め:

  1. 保存フォームを送信したコンピュータのIP(サーバーからそれを阻止するかのit.s迷惑)
  2. 情報がロードされたときに別のページにユーザーを送信するため、ページを更新するときにPOSTデータが取得されません。
+0

IPは、少なくともいくつかの理由(IPの再利用、ルータのマスキングなど)で複数のクライアントによって使用される可能性があることに注意してください。 –

4

ログインシステムを正しく作成するのは難しいため、自分で作成するべきではありません(セキュリティ)。あなたのサイトにあなたのユーザのパスワードを(いかなる形であれ)保存してはいけません(危険な)=>例えば、lifehacker.comが侵害されました(私のアカウントでも:()です).lightopenidのようなものを使うべきです)を使用して認証します。

あなたのサイトにあなたが持っている残りのフォームは、(少なくとも)次の保護を持っている必要があります。

0

に対してyouselfを保護するために

  • 使用PDOプリペアドステートメントフォームのセキュリティに追加することができますいくつかの方法があります入力
  • 起源検証
  • 増感

    1. のようなものです再キャプチャ
    2. avoidサーバ変数

    詳細については、PHP Form handling tutorialセキュリティセクションを参照してください。

  • 関連する問題