1. 入力をフィルターし、出力を回避します
「入力をフィルターし、出力を回避する」というフレーズを FIEO と略すこともありますが、これは PHP アプリケーションのセキュリティのマントラとなっています。
1. 検証には ctype を使用します
ctype: http://php.net/ctype
2. 検証には PCRE (Perl 互換の正規表現) を使用します
PCRE: http://php.net/pcre
2. クロスサイトスクリプティング
XSS とも呼ばれるクロスサイト スクリプティングは、アプリケーション出力内でユーザーが指定した変数の場所をターゲットとする攻撃ベクトルですが、その変数は適切にエスケープされていません。これにより、攻撃者は、この変数の値の一部として、選択したクライアント側スクリプトを挿入することができます。このタイプの攻撃に対して脆弱なコードの例を次に示します:
リーリーオンラインリソース:
1. http://ha.ckers.org/xss.html
2. http://shiflett.org/articles/cross-site-scripting
3. http://seancoates.com/blogs/xss-woes
3. 偽のクロスサイトスクリプティング
攻撃者が、人気のオンライン ストアから高価な商品を代金を支払わずに入手したいと考えているとします。代わりに、彼らは何も疑っていない被害者にその金額を支払ってほしいと考えています。彼らが選んだ武器は、偽のクロスサイトリクエストです。このタイプの攻撃の目的は、被害者に特定の Web サイトにリクエストを送信させ、被害者がその Web サイトに登録した ID 情報を使用することです。
オンラインリソース:
1. http://shiflett.org/articles/cross-site-request-forgeries
2. http://shiflett.org/articles/foiling-cross-site-攻撃
4. セッションの固定
前に示したように、ユーザー セッションは頻繁に攻撃の対象となり、潜在的な被害者とターゲット Web サイトを特定するこの機能により、一部の攻撃がそれらを利用することが可能になります。攻撃者が有効なセッション識別子を取得する 3 つの方法を次に示します。難易度の高い順に並べると、次のようになります。
1.修正済み
2.キャプチャ
3. 予測
オンラインリソース:
1. http://shiflett.org/articles/session-fixation
2. http://phpsec.org/projects/guide/4.html#4.1
3. http://www.owasp.org/index.php/Session_fixation
5. セッションハイジャック
セッション ハイジャックという用語は、次の 2 つのことを説明するために使用されるため、少し混乱します:
1. アクセスを取得した方法に関係なく、攻撃者が被害者のアカウントに関連付けられた Web サイト上のセッションにアクセスすることになるあらゆる種類の攻撃。
2. 固定された手法や予測を通じてセッション ID を取得するのではなく、確立されたセッション ID をキャプチャする必要がある特定のタイプの攻撃。
オンラインリソース:
1. http://shiflett.org/articles/session-hijacking
2. http://shiflett.org/articles/the-truth-about-sessions
3. http://phpsec.org/projects/guide/4.html#4.2
6. SQL インジェクション
このタイプの攻撃の性質は、前述した「入力のフィルタリングと出力の回避」に関連しています。基本的に、SQL インジェクションは XSS に非常に似ており、攻撃オブジェクトによってアプリケーションはユーザー入力がそれが表すデータ以上の意味を持っていると認識します。 XSS の目的は、これらの入力をクライアント側のコードとして実行することですが、SQL インジェクションの目的は、それらの入力を SQL クエリまたはクエリの一部と見なすことです。
オンラインリソース:
1. http://shiflett.org/articles/sql-injection
2. http://phpsec.org/projects/guide/3.html#3.2
7. パスワードを保存します
Web アプリケーションがデータベース クエリでのユーザー入力を効果的に処理できる状況では、攻撃者はユーザー アカウントにアクセスするためにより幅広い手段を使用する必要があります。通常、これには、被害者のデータにアクセスするためのアクセス資格情報の取得も含まれます。
これを実現する 1 つの方法は、Web アプリケーションが使用するデータベース サーバーに強制的にアクセスすることです。使用するデータベース、データベースの構成方法、その他の関連情報に応じて、攻撃者はさまざまな方法で侵入します。
オンラインリソース:
1. http://php.net/mcrypt
2. http://www.openwall.com/phpass/
3. http://codahale.com/how-to-safely-store-a-password/
8. ブルートフォース攻撃
攻撃者にとって、データベースに侵入したり、暗号化されたパスワードを復号したりするための技術的な敷居は高すぎます。この場合、攻撃者は、ブラウザを使用する通常のユーザーの HTTP リクエストをシミュレートするスクリプトを使用して、正しいユーザー名とランダムなパスワードを使用して Web アプリケーションにログインしようとする可能性があります。パスワード。この手法は「ブルートフォース攻撃」と呼ばれます。
オンラインリソース:
1. https://www.owasp.org/index.php/Brute_force_攻撃
2. http://en.wikipedia.org/wiki/ブルートフォース攻撃
9、SSL
オンラインリソース:
1. http://arst.ch/bgm
2. http://www.owasp.org/index.php/SSL_Best_Practices
PHP セキュリティ関連リソース:
1. http://www.php.net/manual/en/security.php PHPマニュアルにはさまざまなセキュリティ問題に関する章があります
2. http://phpsecurity.org/ 書籍「Essential PHP Security」の関連サイトです
3. http://phpsec.org/projects/guide/ PHP Security Association のプロジェクトの 1 つが「PHP Security Guide」です
4. http://www.enigmagroup.org/ この Web サイトは、Web アプリケーションやフォーラムに対する多くの潜在的な攻撃ベクトルに関する情報と実践的な演習を提供します。