2011-01-13 4 views
12

ユーザ入力を消去するにはJavascriptの固体ライブラリ/関数を知っていますか?Javascriptの固体ライブラリ/関数を知っている人は誰でも入力してください。

主にXSS攻撃とその種類を防ぐためです。私はバックエンドでのNode.jsを使用しています:言っ図書館等

EDITできる特定のタグのオプションを持っていた場合

それはプラスになります。だから私はそのようなことのためにjavascriptライブラリが必要です。 Preventing XSS in Node.js/server side javascript

をしかし、私はちょうどより多くのオプションを取得するために期待していた。

人々はここにGoogleのカハの一部を推奨しています。

+3

は個人的に、私はスクラブ入力がセマンティックな理由ではなく、セキュリティ上の理由のために行われるべきだと思います。 XSSのような攻撃のファミリーは本当に**出力**の問題です。異なる出力ドメインをさまざまな方法で「保護する」必要があります。これらのセキュリティ上の脅威は、アプリケーションの機能を潜在的に低下させることなく、入力時には本当に解決できません。 – Pointy

+0

それは良い点です@Pointy - しかし、あなたはおそらく複数の理由でユーザー入力をフィルタリングしたいと思うでしょう。 – arnorhs

+0

@amorhs - はい、セマンティックな理由で入力をフィルタリングするのが良いと思います。電話番号は電話番号などのように見えるはずですが、入力を制限する正当な理由はありません(「コメント」や「メモ」フィールドなど)。たぶん顧客は、テキストに "&"または "<"を含めるのに十分な理由があります。名前の中にアポストロフィやアンパサンドがある人もいます。 – Pointy

答えて

13

例は

var check = require('validator').check, 
    sanitize = require('validator').sanitize 

// Validate 
check('[email protected]').len(6, 64).isEmail();  //Methods are chainable 
check('abc').isInt();        //Throws 'Invalid integer' 
check('abc', 'Please enter a number').isInt();  //Throws 'Please enter a number' 
check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/); 

// Sanitize/Filter 
var int = sanitize('0123').toInt();     //123 
var bool = sanitize('true').toBoolean();    //true 
var str = sanitize(' \s\t\r hello \n').trim();  //'hello' 
var str = sanitize('aaaaaaaaab').ltrim('a');  //'b' 
var str = sanitize(large_input_str).xss(); 
var str = sanitize('&lt;a&gt;').entityDecode();  //'<a>' 
+1

validator.jsのv3では、xss()メソッドは非推奨であることに注意してください。 Chris(validator.jsの著者)は、現在、人々がGoogleのCajaライブラリを使用することを推奨しています。詳細はこちらをご覧ください:https://github.com/chriso/validator.js/commit/2d5d6999541add350fb396ef02dc42ca3215049e –

関連する問題