ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルでの XSS 攻撃と SQL インジェクションの防止についての詳細な説明

PHP_PHP チュートリアルでの XSS 攻撃と SQL インジェクションの防止についての詳細な説明

WBOY
リリース: 2016-07-13 17:13:44
オリジナル
1678 人が閲覧しました

この記事では、PHP における XSS 攻撃と SQL インジェクションの防止について詳しく説明します。詳しく知りたい方は参照してください。

XSS攻撃

コードは次のとおりです コードをコピー

任意のコード実行
ファイルには CSRF も含まれています。 }

SQL 攻撃やさまざまなアンチインジェクション スクリプトに関する記事はたくさんありますが、どれも SQL インジェクションの根本的な問題を解決することはできません
コードを参照:

コードは次のとおりですコードをコピー 1. フォームのテキストボックスに「or‘1'=1」または「and 1=1」と入力します データベースにクエリを実行するときのステートメントは次のようになります:

mysql_connect("localhost","root","123456")or die("データベース接続に失敗しました!"); mysql_select_db("テスト1"); $user=$_post['uid']
$pwd=$_POST['パス']
if(mysql_query("SELECT * どこから
管理者
= `ユーザー名`='$user' または `パスワード`='$pwd'"){
echo "ユーザーは正常にログインしました。"; }エレス{
echo "ユーザー名またはパスワードのエラー"
}
?>



非常に単純なコードであり、その機能はユーザー名またはパスワードが正しいかどうかを確認することですが、一部の悪意のある攻撃者がポストの挿入を判断するには 2 つの方法が考えられます。
SELECT admin from where login = `user`=''or‘1'=1' or `pass`=‘xxxx'

もちろん、SQL ステートメントでは or は and or を表すため、エラーは発生しません。もちろん、エラーも表示されます。
その時点で、SQL ステートメントの実行後に現在のテーブルのすべての情報をクエリできることがわかりました。例: ログイン侵入用の正しい管理者アカウントとパスワード。 。

修正 1:

JavaScript スクリプトを使用して特殊文字をフィルタリングします (推奨されません。インジケーターは根本原因を解決しません)
攻撃者が JavaScript を無効にしても、SQL インジェクション攻撃を実行できる可能性があります。 。
修正 2:

mysqlの組み込み関数を使用してフィルタリングします。
コードを参照:

コードは次のとおりです

コードをコピー // データベースへの接続などの操作を省略します。 。 $user=mysql_real_escape_string($_POST['user']); mysql_query("select * from admin whrer `username`='$user'"); ?>




以前に xss 攻撃について話したので、XSS 攻撃とその防止について話しましょう。 。
フォームを送信:

コードは次のとおりです


コードをコピー

<フォームメソッド="ポスト"アクション="">

ファイルを受信する: コードをコピー




コードは次のとおりです

if(empty($_POST['sub'])){ エコー $_POST['テスト']; }

非常に単純なコードです。ここでは使用シナリオをシミュレートするだけです。
攻撃者の提出物に参加する

コードは次のとおりです コードをコピー
<script>alert(document.cookie);</script>
現在のページの Cookie 情報が返されたページに表示されます。

これを一部の掲示板 (事前にフィルタリングされていない) に適用し、管理者が変更された情報を確認するときに COOKIE 情報を盗み、攻撃者のスペースまたはメールボックスに送信します。 。攻撃者は Cookie 修飾子を使用してログイン侵入を実行する可能性があります。 。
もちろん、解決策はたくさんあります。 。最も一般的に使用される方法の 1 つを紹介しましょう。

修正 1: JavaScript を使用してエスケープする
修正2:PHPの組み込み関数を使用してエスケープします コードは次のとおりです:

コードは次のとおりですコードをコピー[コード]
if(empty($_POST['sub'])){
$str=$_POST['テスト']
htmlentities($srt); エコー $srt
}
[html]

以上、SQLインジェクション攻撃とXSS攻撃の事例と修復方法についてでした。


http://www.bkjia.com/PHPjc/629115.html

tru​​ehttp://www.bkjia.com/PHPjc/629115.html技術記事この記事では、PHP における XSS 攻撃と SQL インジェクションの防止について詳しく説明します。詳しく知りたい方は参照してください。 XSS攻撃コードは以下の通りです。 コードをコピーして、ファイルパッケージを実行します...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート