。
例は
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('<a>').entityDecode(); //'<a>'
は個人的に、私はスクラブ入力がセマンティックな理由ではなく、セキュリティ上の理由のために行われるべきだと思います。 XSSのような攻撃のファミリーは本当に**出力**の問題です。異なる出力ドメインをさまざまな方法で「保護する」必要があります。これらのセキュリティ上の脅威は、アプリケーションの機能を潜在的に低下させることなく、入力時には本当に解決できません。 – Pointy
それは良い点です@Pointy - しかし、あなたはおそらく複数の理由でユーザー入力をフィルタリングしたいと思うでしょう。 – arnorhs
@amorhs - はい、セマンティックな理由で入力をフィルタリングするのが良いと思います。電話番号は電話番号などのように見えるはずですが、入力を制限する正当な理由はありません(「コメント」や「メモ」フィールドなど)。たぶん顧客は、テキストに "&"または "<"を含めるのに十分な理由があります。名前の中にアポストロフィやアンパサンドがある人もいます。 – Pointy