例: SQL インジェクション攻撃
ですが、SQL インジェクションの根本的な問題を解決できるものはありません
コードを参照してください:
コードをコピーします
コードは次のとおりです:
mysql_connect ("localhost","root","123456") または die ("データベース接続に失敗しました!");
$user=$_post['uid']; ['pass'];
if(mysql_query("SELECT * from where
admin
= `username`='$user' or `password`='$pwd'"){
echo "ユーザーは正常にログインしました。 ";
} eles {
echo "ユーザー名またはパスワードが正しくありません"; } ?>
非常に単純なコードで、機能はユーザー名またはパスワードが正しいかどうかを確認することですが、一部の悪意のある攻撃者はいくつかの機密コード。その結果は想像できます。ポストは注入方法を決定します
1. フォームフォームのテキストボックスに「or'1'=1」または「and 1=1」を入力します。データベースにクエリを実行するステートメントは次のようにする必要があります:
SELECT admin from wherelogin = `user`= ''or'1'=1' or `pass`='xxxx'
もちろん、 or は and を意味するため、エラーは発生しません。 、または SQL ステートメント内で、SQL ステートメントを実行できることがわかったら、たとえば、正しい管理者アカウントとパスワードを使用してログを取得できます。
修復方法 1:
JavaScript スクリプトを使用して特殊文字をフィルタリングします (推奨されません。このインジケーターは問題を解決しません)
攻撃者が JavaScript を無効にしても、SQL インジェクション攻撃を実行できる可能性があります。 mysql の組み込み関数を使用してフィルタリングします。
次のようにコードをコピーします。
< ?php
// データベースへの接続などの操作を省略します。
$user=mysql_real_escape_string _POST['user']);
mysql_query("select * from admin whrer `username`='$user'")
?>
XSS 攻撃と防御について話しましょう。 。 。
フォームを送信します:
コードをコピーします
コードは次のとおりです:
ファイルを受信:
コードをコピー
コードは次のとおりです。
if(empty($ _POST['sub'])){
echo $_POST['test'];
} 非常に単純なコードで、ここでは使用シナリオをシミュレートするだけです。攻撃者が送信する<script>alert(document.cookie);</script>
返されたページには現在のページの Cookie 情報が表示されます。
これを一部の掲示板(事前にフィルタリングされていない)に適用し、管理者が変更された情報を確認する際に COOKIE 情報を盗み、攻撃者のスペースまたはメールボックスに送信することができます。 。攻撃者は Cookie 修飾子を使用してログイン侵入を実行できます。 。
もちろん、解決策はたくさんあります。 。最も一般的に使用される方法の 1 つを紹介しましょう。
修復 1: JavaScript を使用してエスケープします
修復 2: php の組み込み関数を使用してエスケープします
コードは次のとおりです:
[code]
if(empty($_POST['sub'])){
$str= $ _POST['test'];
htmlentities($srt);
echo $srt; [html] SQL インジェクション攻撃と XSS 攻撃のケースと修復方法については以上です。 もちろん他の解決策もあります: 例: php フレームワークを使用する
他の方法もあります。 。もちろん、XSS には数多くの幅広い適用範囲と攻撃方法があります。この記事は php の送信方法のみをフィルタリングしています。他にも自分で勉強する必要があることがあります ^_^~
この記事はここに公開されています: Aey uhost チーム (team.hake.cc)、転載する場合は著作権を提示してください。
y0umer
2012/6/7
http://www.bkjia.com/PHPjc/325589.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/325589.html
技術記事
例: SQL インジェクション攻撃