ホームページ  >  記事  >  バックエンド開発  >  よくあるPHP攻撃(6種類の攻撃を詳しく解説)

よくあるPHP攻撃(6種類の攻撃を詳しく解説)

不言
不言オリジナル
2018-04-03 11:26:212252ブラウズ

この記事では、一般的な PHP 攻撃を紹介します (6 種類の攻撃の詳細な説明)。ヘルプが必要な方の参考にもなります。

1.

SQL インジェクションは、ユーザーがフォーム フィールドに SQL ステートメントを入力して、通常の SQL 実行に影響を与える悪意のある攻撃です。 system() または exec() コマンドを通じて注入されるものもあり、これは同じ SQL インジェクション メカニズムを持ちますが、シェル コマンドのみを対象とします。


[Python]プレーンコピーを表示


よくあるPHP攻撃(6種類の攻撃を詳しく解説)よくあるPHP攻撃(6種類の攻撃を詳しく解説)

  1. $username = $_POST[ 「ユーザー名」]; $query = "select * from auth where username = '"

    .$username.
  2. "'"

    echo $query; $db = new mysqli('localhost',

    'デモ'
  3. , 'デモ

    ', 'デモデモ'

    ); ); 正常にログインしました"
  4. ;

  5. } else {

  6. echo "
    ログインに失敗しました"

  7. }

SQL インジェクションを防止するオプション:

* mysql_real_escape_string() を使用してデータをフィルタリングします
* 各データが正しいデータ型であるかどうかを手動で確認します
* プリペアドステートメントを使用し、変数をバインドします
* プリペアドプリペアドステートメントを使用します
* 個別のデータおよび SQL ロジック
* 準備されたステートメントは自動的にフィルタリングされます (エスケープなど)
* チーム内の新参者が上記の問題に遭遇することを避けるのに役立つコーディング標準として使用します


[python]

viewプレーンコピー


よくあるPHP攻撃(6種類の攻撃を詳しく解説)よくあるPHP攻撃(6種類の攻撃を詳しく解説)

  1. $query = の国コード=?';

    if
  2. ($stmt = $db->prepare($query)){

    $countrycode =

    'hk'
  3. $stmt ->bind_param(

    さん"
  4. , $countrycode);

    $stmt->execute();

  5. $stmt->bind_result($name, $district);

  6. ( $stmt ($stmt->fetch() ) {

  7. echo $name.
  8. ', '

    .$district

  9. '
    }
  10. $stmt- >close();

  11. }
  12. 2. XSS 攻撃

  13. クライアント側のスクリプト (通常は JavaScript) を含む Web サイト。フィルタリングせずに別の Web ページにデータを出力すると、このスクリプトが実行されます。ユーザーが送信したテキスト コンテンツ
  14. * 迷惑なポップアップ ウィンドウ * 更新またはリダイレクト * Web ページまたはフォームを損傷する

    * Cookie を盗む
  15. * AJAX (XMLHttpRequest)
XSS 攻撃を防ぐ

XSS 攻撃を防ぐには、PHP を使用しますhtmlentities() 関数を使用してフィルターし、ブラウザーに出力します
htmlentities () の基本的な使用法は簡単ですが、多くの高度なコントロールがあります。

3. セッションのセキュリティを参照してください。ただし、PHPSESSID は推測が難しいと想定されますが、PHP は Cookie または URL を介してセッション ID を受け入れることができるため、被害者になりすますと、特定の (またはその他の) セッション ID またはフィッシング攻撃が使用される可能性があります。ハイジャック

これはセッション固定と同じですが、セッション ID が Cookie に保存されている場合は、XSS や JavaScript を介して盗むこともできます。セッション ID が URL に含まれている場合は、スニッフィングまたはプロキシ サーバーから取得します。 キャッチ アンド ハイジャック:

* ID の更新

* セッションを使用している場合は、ユーザーが SSL を使用していることを確認してください


5. クロスサイト リクエスト フォージェリ ( CSRF)



CSRF 攻撃は、「サイトの信頼できるユーザーになる」ように見えるページによって行われるリクエストですが、次の例のように、多くのバリエーションがあります:


。 ]
プレーンコピーを表示





  1. よくあるPHP攻撃(6種類の攻撃を詳しく解説)'http://example.com/single_click_to_buy.php?user_id=123&item=12345'>


クロスサイトを防ぐ捏造リクエスト
一般に、ユーザーがフォームから来ており、送信するすべてのフォームと一致することを確認してください。覚えておく必要があることが 2 つあります:
各セッションの ID の更新やユーザーの SSL の使用など、ユーザー セッションに適切なセキュリティ対策を適用します。
別のワンタイム トークンを生成してフォームに埋め込み、セッション (セッション変数) に保存し、送信時に確認します。


6. コードインジェクション

コードインジェクションは、無効なデータを処理することによってコンピューターの脆弱性を悪用することによって引き起こされます。問題は、通常はファイルのインクルードによって、誤って任意のコードを実行したときに発生します。コードの書き方が不十分だと、リモート ファイルが組み込まれて実行される可能性があります。多くの PHP 関数と同様に、require などには URL またはファイル名を含めることができます。例:


[python]プレーンコピーを表示


よくあるPHP攻撃(6種類の攻撃を詳しく解説)よくあるPHP攻撃(6種類の攻撃を詳しく解説)

  1. < ;フォーム>

  2. テーマを選択:

  3. ;オプション値=青>青オプション>

  4. 値=緑>緑

  5. if($theme) {

  6. require($theme.'.txt');

  7. ?> ;

  8. 上記の例では、ユーザーが入力したファイル名またはファイル名の一部を渡すことで、「http://」で始まるファイルが組み込まれます。

コードインジェクションを防止


*ユーザー入力をフィルタリング

*php.ini設定でallow_url_fopenとallow_url_includeを無効にします。これにより、リモート ファイルの require/include/fopen が無効になります。
その他の一般原則1. 特に Web サーバー/PHP が ISP によって管理されている場合、または Web サイトが他の場所に移行/展開され、将来使用されない場合は、サーバー構成に依存しないでください。他の場所に移行/デプロイします。ウェブサイトのコード (HTML、JavaScript、PHP など) にセキュリティを意識したチェック/ロジックを埋め込んでください。
2. サーバー側のセキュリティ スクリプトを設計します:

- たとえば、単一の実行行を使用します (シングル ポイント認証とデータ サニタイズ)。すべてのログイン/セキュリティ ロジック チェック

3. コードが更新され、最新のパッチが適用されていることを確認します。

関連する推奨事項:


PHP 攻撃 Web サイト防御コード - および攻撃コードの逆翻訳_PHP チュートリアル

以上がよくあるPHP攻撃(6種類の攻撃を詳しく解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。