XSSに問題があります。具体的には、入力に脆弱性があることを示すJSアラートを個別に挿入しました。私はXSSの研究を行い、例を見つけましたが、何らかの理由でそれらを機能させることができません。
入力に投げ込むことができるXSSの例を入手できますか?それをユーザーに出力すると、脆弱性があることを知らせるアラートのような何らかの変化が見られますか?
PHPとhtmlspecialchars()を実装するつもりですが、最初にこれらの脆弱性を再現しようとしています。
ありがとう!
このFirefoxアドオンを使用できます:
XSS-Meは、クロスサイトスクリプティング(XSS)の反射をテストするために使用されるExploit-Meツールです。現在、保存されているXSSのテストは行いません。
このツールは、HTMLフォームを送信し、フォームの値をXSS攻撃を表す文字列で置き換えることにより機能します。結果のHTMLページで特定のJavaScript値(document.vulnerable = true)が設定されている場合、ツールはページを特定のXSS文字列に対して脆弱であるとマークします。このツールは、特定のシステムのセキュリティを侵害しようとしません。システムに対する攻撃の可能なエントリポイントを探します。ツールによるポートスキャン、パケットスニッフィング、パスワードハッキング、ファイアウォール攻撃はありません。
ツールによって行われる作業は、これらのすべての文字列をフォームフィールドに手動で入力するサイトのQAテスターと同じと考えることができます。
例えば:
<script>alert("XSS")</script>
"><b>Bold</b>
'><u>Underlined</u>
自動化されたツールの一部を使用することは非常に良いことですが、それらからは洞察や経験を得ることができません。
XSS攻撃のポイントは、ブラウザウィンドウでJavaScriptを実行することです。これは、サイトから提供されていません。そのため、まず、ユーザーが提供したデータがどのようなコンテキストでWebサイトに印刷されているかを確認する必要があります。 _<script></script>
_コードブロック内、_<style></style>
_ブロック内、エレメント_<input type="text" value="USER DATA" />
_の属性として、または_<textarea>
_のインスタンスとして使用される場合があります。それに応じて、コンテキストをエスケープする(または使用する)ために使用する構文が表示されます。たとえば、_<script>
_タグ内にいる場合、関数の括弧を閉じて行をセミコロンで終了するだけで十分な場合があるため、最終的な注入は_); alert(555);
_のようになります。提供されたデータがhtml属性として使用されている場合、インジェクションは" onclick="alert(1)"
のように見える可能性があり、要素をクリックするとjsが実行されます(この領域は特にhtml5で遊ぶのが豊富です)。ポイントは、xssのコンテキストは、適切なフィルタリング/サナタイズ機能と同じくらい重要であり、多くの場合、自動化ツールでは検出できない小さなニュアンスがある場合があるということです。上記のように引用符やhtmlタグがなくてもわかるように、限られた状況では、フィルターをバイパスしてjsを実行できる場合があります。
また、ブラウザのエンコーディングも考慮する必要があります。たとえば、ターゲットブラウザにutf7エンコーディングがある場合はフィルタをバイパスできます(そして、インジェクションをそのようにエンコードします)。フィルター回避はまったく別の話ですが、現在のPHP関数は、正しく使用すればかなり安全です。
また、ここに十分な長さの XSSベクトル のリストがあります
最後に、サイトで見つかったXSS文字列の実際の例を次に示します。単一のスキャナーがそれを見つけたわけではないことを保証します(さまざまなフィルターとWordブラックリストがあり、基本的なページを挿入できるページプロフィールページをカスタマイズするためのHTMLフォーマット):
<a href="Boom"><font color=a"onmouseover=alert(document.cookie);"> XSS-Try ME</span></font>
アドホックテストは問題ありませんが、何かを見逃していないことを確認するために、Webアプリケーションの脆弱性スキャンツールを試すことをお勧めします。
acunetixは非常に優れており、アプリケーションの無料試用版があります。
http://www.acunetix.com/websitesecurity/xss.htm
(注:この会社には所属していませんが、この製品を使用して自分のアプリケーションをテストしました)。