ホームページ  >  記事  >  バックエンド開発  >  PHPの脆弱性徹底解説(3) ~クライアントスクリプト埋め込み~

PHPの脆弱性徹底解説(3) ~クライアントスクリプト埋め込み~

黄舟
黄舟オリジナル
2016-12-22 09:20:251264ブラウズ

クライアント側スクリプト挿入 (スクリプト挿入) は、フォーム、画像、アニメーション、ハイパーリンク テキストなどのオブジェクトに実行可能スクリプトを挿入することを指します。ユーザーがこれらのオブジェクトを開くと、攻撃者によって埋め込まれたスクリプトが実行され、攻撃が開始されます。

スクリプト インプラントとして使用できる HTML タグには、通常次のものが含まれます。

1. <script> タグでマークされた javascript や vbscript などのページ スクリプト。 <script> タグで js プログラム コードを指定することも、src 属性で js ファイルの URL パスを指定することもできます。これらのオブジェクトは、Java アプレット、マルチメディア ファイル、ActiveX コントロールなどです。通常、オブジェクトの URL パスは、<embed> タグでマークされたデータ属性で指定されます。これらのオブジェクトは、swf ファイルなどのマルチメディア ファイルです。通常、オブジェクトの URL パスは src 属性 </script>

4 で指定されます。これらのオブジェクトは Java アプレットであり、オブジェクトの URL パスは通常 codebase 属性で指定されます。 5.

タグでマークされたオブジェクト。通常、フォームデータを処理する Web アプリケーションの URL パスはアクション属性で指定されます

クライアント側スクリプト埋め込み攻撃手順

1. 攻撃者は通常のユーザーとして登録した後、Web サイトにログインします

2.メッセージページにアクセスし、攻撃用のjsコードを挿入します

3. 他のユーザー(管理者も含む)がWebサイトにログインし、このメッセージの内容を閲覧します

4. メッセージ内容に隠されたjsコードが実行され、攻撃が成功します。

インスタンス

データベース

PHPの脆弱性徹底解説(3) ~クライアントスクリプト埋め込み~CREATE TABLE `postmessage` (

`id` int(11) NOT NULL auto_increment,

`subject` varchar(60) NOT NULL デフォルト ”,

`name` varchar (40) NOT NULL デフォルト ”,

`email ` varchar(25) NOT NULL デフォルト ”,

`question` mediatext NOT NULL,

`postdate` datetime NOT NULL デフォルト '0000-00-00 00:00: 00′,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT='ユーザーのメッセージ' AUTO_INCREMENT=69;

//add.php insert message

//list.php メッセージリスト

//show.php 表示メッセージ

以下のメッセージを送信してください

このメッセージを参照すると、js スクリプトが実行されますPHPの脆弱性徹底解説(3) ~クライアントスクリプト埋め込み~

Insert <script>while(1){windows.open( );}</script> 無限ポップアップ ボックス


<script>location.href="http://www.php1.cn/"></script>

または他の自己構築された JS コードを使用して攻撃します

防止方法

通常、特殊文字をHTMLエンコーディングに変換するには、htmlspecialchars関数を使用します

関数プロトタイプ

string htmlspecialchars (string string, int quote_style, string charset)

stringはエンコードされる文字列です

quote_styleはオプションです。値は ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES です。デフォルト値 ENT_COMPAT は二重引用符のみを変換し、ENT_QUOTES は二重引用符と一重引用符の両方を変換することを意味します。 ENT_NOQUOTES は、二重引用符と一重引用符が変換されないことを示します。

charset は、使用される文字セットを示します。

& —-> " —-> "

" —-> '

> >

; echo htmlspecialchars( nl2br($row['question']), ENT_QUOTES); >

次に、js が挿入されている脆弱性ページを確認します

上記は、PHP の脆弱性 (3) の完全な解決策です。クライアント スクリプト埋め込みのコンテンツ。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。