1. ホーム
  2. javascript

[解決済み] なぜこのマスクされたJSコードがGETパラメータ: '*alert(13)*' で私のページで実行されるのでしょうか?

2022-02-09 06:41:37

質問内容

WhiteHatによるスキャンを行ったところ、脆弱性の1つとして、URLの末尾に whscheck'*alert(13)*'a/ . 完全な URL を実行すると ( https://oursite.com/phorders3/index.php/whscheck'*alert(13)*'a/ ) が読み込まれ、13という値のアラートがポップアップ表示されます。どなたか、この仕組みについて説明していただけませんか?アスタリスクと a/ は何をしているのでしょうか?

解決方法は?

あなたのページのコードは、URLからの値を適切にエスケープせずに、Javascriptの文字列リテラルで使用しています。つまり、誰でもURLの中にJavascriptを入れれば、ページ内で実行できるということです。

例えば、このようなURLであなたのサイトにリンクし、誰かがそのリンクを使用すると、そのユーザーのブラウザでスクリプトが実行され、そのユーザーの個人情報を拾ってどこかに送信するというクロスサイトスクリプティングに使用することができます。

アポストロフィとアスタリスクは、文字列リテラルから抜け出すために使用します。ページ内のJavascriptにこのようなコードがある場合。

var s = '<? echo $variable ?>';

変数に URL からの値が含まれている場合、レンダリングされたページでは次のようになります。

var s = 'whscheck'*alert(13)*'a';

アポストロフィは文字列リテラルを終了させ、以下の式を文字列の内容ではなく、Javascriptのコードの一部にします。

アスタリスクは式と式の間にある単なる演算子です。を入れるよりも、URLを入れる方が簡単です。 + 演算子を使うのが自然でしょう。