PHP での SQL インジェクションと XSS 攻撃の概要

WBOY
リリース: 2016-07-25 09:05:26
オリジナル
1279 人が閲覧しました
  1. mysql_connect("localhost","root","123456")or die("データベース接続に失敗しました!");
  2. mysql_select_db("test1");
  3. $user=$_post[ 'uid'];
  4. $pwd=$_POST['pass'];
  5. if(mysql_query("SELECT * from where
  6. admin
  7. = `ユーザー名`='$user' または `パスワード`='$pwd'") {
  8. echo "ユーザーは正常にログインしました..";
  9. } eles {
  10. echo "ユーザー名またはパスワードが間違っています";
  11. }
  12. ?>
コードをコピー

上記のコードは検出に使用されますユーザー名またはパスワードが正しいかどうかは正しいですが、機密コードを悪意のある攻撃者に送信した場合、その結果は想像できます

注射を判断するには2つの方法があります。 1. フォームのテキストボックスに「or‘1'=1」または「and 1=1」と入力します。 データベースにクエリを実行するステートメントは次のようになります。 SELECT admin from where login = `user`=''or '1'=1' or `pass`='xxxx' もちろん、SQL ステートメントでは or は and or を表すため、エラーは発生しません。もちろん、エラーも表示されます。 その時点で、SQL ステートメントの実行後に現在のテーブルのすべての情報をクエリできることがわかりました。例: ログイン侵入用の正しい管理者アカウントとパスワード。 。

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

修復方法2: mysql の組み込み関数を使用してフィルタリングします。

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

2、XSS 攻撃と防止。 フォームを送信:

コードをコピー

ファイルを受信:

  1. if(empty($_POST['sub'])){
  2. echo $_POST['test'];
  3. }
コードをコピー

コードは非常に単純で、シミュレートされただけですシーンを使用します。

3. 攻撃者の提出物を追加する 現在のページの Cookie 情報が、返されたページに表示される必要があります。 これを一部の掲示板 (事前にフィルタリングされていない) に適用し、管理者が変更された情報を確認するときに COOKIE 情報を盗み、攻撃者のスペースまたはメールボックスに送信します。 攻撃者は Cookie 修飾子を使用してログイン侵入を実行できます。

以下では、最も一般的に使用されるソリューションの 1 つを紹介します。 解決策 1: JavaScript を使用してエスケープする 解決策 2: PHP 組み込み関数を使用してエスケープする

  1. if(empty($_POST['sub'])){
  2. $str=$_POST['test'];
  3. htmlentities($srt);
  4. echo $srt;
  5. }
コードをコピー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!