この記事では、PHP における XSS 攻撃と SQL インジェクションの防止について詳しく説明します。詳しく知りたい方は参照してください。
XSS攻撃
コードは次のとおりです | コードをコピー |
任意のコード実行 |
SQL 攻撃やさまざまなアンチインジェクション スクリプトに関する記事はたくさんありますが、どれも SQL インジェクションの根本的な問題を解決することはできません
コードを参照:
コードをコピー | |
mysql_connect("localhost","root","123456")or die("データベース接続に失敗しました!");
mysql_select_db("テスト1");
$user=$_post['uid'] |
1. フォームのテキストボックスに「or‘1'=1」または「and 1=1」と入力します
もちろん、SQL ステートメントでは or は and or を表すため、エラーは発生しません。もちろん、エラーも表示されます。
その時点で、SQL ステートメントの実行後に現在のテーブルのすべての情報をクエリできることがわかりました。例: ログイン侵入用の正しい管理者アカウントとパスワード。 。
修正 1:
JavaScript スクリプトを使用して特殊文字をフィルタリングします (推奨されません。インジケーターは根本原因を解決しません)
攻撃者が JavaScript を無効にしても、SQL インジェクション攻撃を実行できる可能性があります。 。
修正 2:
mysqlの組み込み関数を使用してフィルタリングします。
コードを参照:
コードは次のとおりです
// データベースへの接続などの操作を省略します。 。 | |
|
コードをコピー
<フォームメソッド="ポスト"アクション=""> | ファイルを受信する: |
コードは次のとおりです | コードをコピー
コードは次のとおりです | コードをコピー |
<script>alert(document.cookie);</script>
|
これを一部の掲示板 (事前にフィルタリングされていない) に適用し、管理者が変更された情報を確認するときに COOKIE 情報を盗み、攻撃者のスペースまたはメールボックスに送信します。 。攻撃者は Cookie 修飾子を使用してログイン侵入を実行する可能性があります。 。
もちろん、解決策はたくさんあります。 。最も一般的に使用される方法の 1 つを紹介しましょう。
修正 1: JavaScript を使用してエスケープする
修正2:PHPの組み込み関数を使用してエスケープします
コードは次のとおりです:
コードをコピー | |
if(empty($_POST['sub'])){ $str=$_POST['テスト'] htmlentities($srt); エコー $srt } [html] |
http://www.bkjia.com/PHPjc/629115.html
。