この記事では、一般的な PHP 攻撃を紹介します (6 種類の攻撃の詳細な説明)。ヘルプが必要な方の参考にもなります。
1.
SQL インジェクションは、ユーザーがフォーム フィールドに SQL ステートメントを入力して、通常の SQL 実行に影響を与える悪意のある攻撃です。 system() または exec() コマンドを通じて注入されるものもあり、これは同じ SQL インジェクション メカニズムを持ちますが、シェル コマンドのみを対象とします。
[Python]プレーンコピーを表示
$username = $_POST[ 「ユーザー名」]; $query = "select * from auth where username = '"
.$username.echo $query; $db = new mysqli('localhost',
'デモ'', 'デモデモ'
); ); 正常にログインしました"
} else {
echo "
ログインに失敗しました"
* mysql_real_escape_string() を使用してデータをフィルタリングします
* 各データが正しいデータ型であるかどうかを手動で確認します
* プリペアドステートメントを使用し、変数をバインドします
* プリペアドプリペアドステートメントを使用します
* 個別のデータおよび SQL ロジック
* 準備されたステートメントは自動的にフィルタリングされます (エスケープなど)
* チーム内の新参者が上記の問題に遭遇することを避けるのに役立つコーディング標準として使用します
viewプレーンコピー
$query = の国コード=?';
if$countrycode =
'hk'$stmt ->bind_param(
さん"$stmt->execute();
$stmt->bind_result($name, $district);
( $stmt ($stmt->fetch() ) {
.$district
$stmt- >close();
2. XSS 攻撃
* 迷惑なポップアップ ウィンドウ * 更新またはリダイレクト * Web ページまたはフォームを損傷する
* Cookie を盗む XSS 攻撃を防ぐには、PHP を使用しますhtmlentities() 関数を使用してフィルターし、ブラウザーに出力します
htmlentities () の基本的な使用法は簡単ですが、多くの高度なコントロールがあります。
3. セッションのセキュリティを参照してください。ただし、PHPSESSID は推測が難しいと想定されますが、PHP は Cookie または URL を介してセッション ID を受け入れることができるため、被害者になりすますと、特定の (またはその他の) セッション ID またはフィッシング攻撃が使用される可能性があります。ハイジャック
これはセッション固定と同じですが、セッション ID が Cookie に保存されている場合は、XSS や JavaScript を介して盗むこともできます。セッション ID が URL に含まれている場合は、スニッフィングまたはプロキシ サーバーから取得します。 キャッチ アンド ハイジャック:
* ID の更新 * セッションを使用している場合は、ユーザーが SSL を使用していることを確認してください
5. クロスサイト リクエスト フォージェリ ( CSRF)
CSRF 攻撃は、「サイトの信頼できるユーザーになる」ように見えるページによって行われるリクエストですが、次の例のように、多くのバリエーションがあります:
。 ]プレーンコピーを表示
'http://example.com/single_click_to_buy.php?user_id=123&item=12345'>
クロスサイトを防ぐ捏造リクエスト
一般に、ユーザーがフォームから来ており、送信するすべてのフォームと一致することを確認してください。覚えておく必要があることが 2 つあります:
各セッションの ID の更新やユーザーの SSL の使用など、ユーザー セッションに適切なセキュリティ対策を適用します。
別のワンタイム トークンを生成してフォームに埋め込み、セッション (セッション変数) に保存し、送信時に確認します。
6. コードインジェクション
コードインジェクションは、無効なデータを処理することによってコンピューターの脆弱性を悪用することによって引き起こされます。問題は、通常はファイルのインクルードによって、誤って任意のコードを実行したときに発生します。コードの書き方が不十分だと、リモート ファイルが組み込まれて実行される可能性があります。多くの PHP 関数と同様に、require などには URL またはファイル名を含めることができます。例:
[python]プレーンコピーを表示
< ;フォーム>
テーマを選択:
;オプション値=青>青オプション>
値=緑>緑
if($theme) {
require($theme.'.txt');
?> ;
上記の例では、ユーザーが入力したファイル名またはファイル名の一部を渡すことで、「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 サイトの他の関連記事を参照してください。