node.jsアプリに対するXSS攻撃を防ぐにはどうすればよいでしょうか?hrefs、onclick属性などのjavascriptの削除を処理するライブラリ。POSTされたデータから?
私はそのすべての正規表現を書く必要はありません:)
助言がありますか?
node.jsアプリに対するXSS攻撃を防ぐにはどうすればよいでしょうか?hrefs、onclick属性などのjavascriptの削除を処理するライブラリ。POSTされたデータから?
私はそのすべての正規表現を書く必要はありません:)
助言がありますか?
CajaHTMLSanitizerをバンドルするモジュールを作成しました
npm install sanitizer
http://github.com/theSmaw/Caja-HTML-Sanitizer
https://www.npmjs.com/package/sanitizer
フィードバックをいただければ幸いです。
クライアント側でのHTMLのサニタイズ/リライトに対する回答の1つは、JSのホワイトリストベースのHTMLサニタイザーをGoogle Cajaから借りることを提案しています。これは、クイックスクロールスルーからわかる限り、HTMLSAXパーサーに依存せずに実装します。ブラウザのDOM。
更新:また、正規表現はセキュリティを損なう方法でタイプミスするのが非常に簡単であることが知られている一方で、Cajaサニタイザーは明らかに完全な専門的なセキュリティレビューを受けていることを覚えておいてください。
更新2017-09-24:DOMPurifyもあります。まだ使用していませんが、探しているすべてのポイントを満たしているか、超えているようです。
可能な限り、ランタイム環境によって提供される機能に依存します。(パフォーマンスと、十分にテストされた成熟した実装に可能な限り依存することでセキュリティを最大化するために重要です。)
javascriptの削除を保証しながら、ストリップをできるだけ少なくするように設計されたデフォルト構成。
toStaticHTML
IE8およびIE9では構成不可能なMicrosoft独自のフォールバック。高度に構成可能であるため、WYSIWYGやMarkdownコメントフィールドなど、任意のHTMLを含む可能性のある入力に制限を適用するのに適しています。(実際、ここは山の頂上です)
彼らは互換性と信頼性に真剣に取り組んでいます
通常のテクニックはすべてnode.js出力にも適用されます。つまり、次のことを意味します。
node.jsにこのための組み込みがあるかどうかはわかりませんが、そのようなものでうまくいくはずです。
function htmlEscape(text) {
return text.replace(/&/g, '&').
replace(/</g, '<'). // it's not neccessary to escape >
replace(/"/g, '"').
replace(/'/g, ''');
}
私は最近、 chrisoによってnode-validatorを発見しました。
get('/', function (req, res) {
//Sanitize user input
req.sanitize('textarea').xss(); // No longer supported
req.sanitize('foo').toBoolean();
});
XSS関数は、このライブラリでは使用できなくなりました。
ESAPIもご覧いただけます。ライブラリのjavascriptバージョンがあります。かなり頑丈です。
新しいバージョンのvalidator
モジュールでは、次のスクリプトを使用してXSS攻撃を防ぐことができます。
var validator = require('validator');
var escaped_string = validator.escape(someString);
npmモジュールを試してみてくださいstrip-js
。次のアクションを実行します。
ライブラリnpm「非常識」を試してみてください。 https://github.com/bevacqua/insane
私は本番環境で試してみましたが、うまくいきました。サイズは非常に小さいです(約3kb gzip圧縮)。
ドキュメントは非常に読みやすく、理解しやすいものです。 https://github.com/bevacqua/insane
アップデート2021-04-16:xssは、XSS攻撃を防ぐために、ユーザーからの入力をフィルタリングするために使用されるモジュールです。
ホワイトリストで指定された構成で、信頼できないHTMLを(XSSを防ぐために)サニタイズします。
https://www.npmjs.com/package/xss
プロジェクトホームページにアクセスします: http : //jsxss.com