クロスサイトスクリプティングとは何ですか?
ウィキペディアでそれについて読む:)
しかし、注意してください-ブラウザのせいです。 HTML5をサポートしているか、PNGの透明度をまだ理解していないかは関係ありません。 さて、クライアントは常に正しいので、
バザーコンテンツを適切にフィルタリングする方法を説明します。
XSSについて少し
XSSの哲学は、悪意のあるコードをページに挿入する規則に従ってテキストが使用されないことです。 彼らはどうあるべきか:
- タグ名は、\ r \ t \ n \ s文字のみで属性と区切られます。
< a href ="http://habrahabr.ru" > Click </ a > <!-- -->
< a \ href ="XSS" > Click </ a > <!-- -->
- 10進数/ 16進数で表されるHTMLエンティティは、使い慣れた形式に変換する必要があります。
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;
javascript
- ユーザーのページ上にあるべきではないタグのセットがあります。 ここでは、HTML5を忘れてはなりません。HTML5には、攻撃者がスクリプトレットの代わりにリソースを使用してブラウザーにコードをダウンロードできるタグ(オーディオ、ビデオなど)があります。
- DOMイベントの使用を禁止します。
- 属性インラインJavaScriptまたは(注意!)Vbscriptに含めることの禁止。
- スタイルで「式」やCSS3「動作」などのIEスタイルのクラフトを使用することの禁止
これはすべてメインからのもので、既存のタイプの攻撃の詳細については
こちらをご覧ください。どうすれば自分を守ることができますか?
ほとんどのXSS防止ソリューションは、潜在的に危険な構造の厳密なフィルタリングを使用します。
しかし、この例を見てみましょう:
< a href = http: // habrahabr . ru > javascript:alert("Hello"); </ a >
このコードの危険レベルはゼロです。 ただし、CodeIgniterは以下を返します(他のフレームワークではチェックしていませんが、コメントを読むと便利です)。
< a > [removed]alert("Hello"); </ a >
そのため、CodeIgniter銃からのスズメが殺されます。
より柔軟なフィルターがあります。
最近、
Platcodeフレームワークを開発しています。 しかし、ここではPRを思いつきませんでしたが、自分の
XSSフィルターについて話をしました。
操作の原理は単純です-入力文字列をタグ/属性/値に解析し、フィルターを適用して危険なタグと属性値を削除します。 したがって、テキスト全体の過度のフィルタリングを省略し、タグ/属性を個別にターゲット変更します。 この場合、上記の例は元の外観を保持します。 そして、顧客は幸せになります。
フィルターの機能:
- 「危険な」タグの削除
- インラインjavascript / vbscriptの削除
- 式、動作を含むスタイル属性を削除する
- タグ/属性名の小文字への変換
- 空の属性の削除
- 終了タグの自動作成
- シングルビュータグの<br>から<br />への変換
ただし、コードの文書化は非常に不十分ですが、機能は100%実行可能です。 プロジェクトへの参加やXSSフィルターのハッキングに興味がある人は、PMで書いてください。
UPD。XSSフィルターのテストはい、habraffectホストでは機能しません:)
UPD2。habrasocietyのおかげで、バグのトラップと修正は鼻孔から鼻孔になります。
ユーザーの尊重:insa、
isis 、
recompileme 、
floppyformator 、ICQ:32523553