データをサニタイズする Node.js プロジェクトと、サニタイズを処理して XSS を防ぐ JavaScript 用の OWASP ライブラリがあります。
私はこれらのライブラリのベンチマークを行ってきましたが、それらは非常に集中的であり、やり過ぎかもしれません。私のアプリケーションは動的 HTML (ユーザーによって送信されたもの、bbtags など、まったく必要ないもの) を必要としないので、次のようにしてみませんか?
- "
<
" および ">
" 文字を無効にします。これらの文字を置き換えたり、何も置き換えたりせずに無効にします。ユーザーがこれらを送信した場合は、これらが無効になっていることを警告します (クライアント側とサーバー側の検証)。 &
=>&
"
=>"
'
=>'
/
=>/
- 送信された URL をエンコードする (GET パラメータなど)
- 私のアプリケーションは HTML5 PushState を使用し、バックエンドはフロントエンドから完全に分離されているため、DOM ベースの XSS はカバーされています。
前述のとおり、これで自分自身を守るには十分でしょうか。私のアプリケーションでは、ユーザーが送信した HTML は必要ないため、 タグ<
と>
タグはまったく必要ありません。
すべてのフィードバックをありがとう、これは私が今使っているものです:
var pattern = /<(.*)>/;
function hasHtmlTags(string) {
return pattern.test(string);
};
if (hasHtmlTags(userData)) {
// Do something?
} else {
// Create entity.
}
そのため、ユーザーは引き続き絵文字 :< などを使用でき、関数は < と > の組み合わせが見つかった場合にのみトリガーされます。したがって、高価な正規表現などは必要ありません。< と > の組み合わせを無効にするだけで問題ありません。