2011-01-13 8 views
12

Kullanıcı girişini temizlemek için Javascript'te sağlam bir kütüphane/işlev biliyor musunuz? Temelde XSS saldırılarını ve türlerini engellemek için.Kullanıcı girişini temizlemek için Javascript'te sağlam bir kütüphane/fonksiyon bilen var.

. Ben arka uçta node.js kullanıyorum: bahsedilen kütüphane vb

EDIT'e sağlayan bazı etiketlerin seçeneği olsaydı

Bir artı olacaktır. Bu yüzden bu tür şeyler için bir javascript kütüphanesine ihtiyacım var.

İnsanlar burada tarihinde Caja bir kısmını tavsiye vardır: Preventing XSS in Node.js/server side javascript

Ama sadece daha fazla seçenek almayı umuyordum.

+3

Şahsen, ovma girdi anlamsal nedenlerden değil, güvenlik nedenleriyle yapılması gerektiğini düşünüyorum. XSS benzeri saldırıların ailesi gerçekten bir ** çıktı ** problemidir ve farklı çıktı alanlarını farklı yollarla "korumanız" gerekir. Bu güvenlik tehditleri, uygulama işlevlerinizi potansiyel olarak düşürmeden giriş zamanında gerçekten çözülemez. – Pointy

+0

Bu iyi bir nokta @Pointy - ancak muhtemelen birden fazla nedenden dolayı kullanıcı girdisini filtrelemek isteyebilirsiniz. – arnorhs

+0

@amorhs - evet, semantik nedenlerden dolayı girişi filtrelemenin iyi olduğunu düşünüyorum - telefon numaraları telefon numaraları gibi görünmelidir. Ancak bazen girişi kısıtlamak için iyi bir neden yoktur ("Yorumlar" veya "Notlar" alanları gibi). Belki bir müşterinin, metninde "&" veya "<" ifadesini içermek için iyi bir nedeni vardır. Bazı insanlar isminde kesme ya da işareti var! – Pointy

cevap

13

Ben chriso tarafından node-validator kullanın.

Örnek

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 dosyasının v3'ten itibaren xss() yönteminin kullanımdan kaldırıldığını unutmayın. Chris (validator.js'nin yazarı) artık kullanıcıların Google'ın Caja kitaplığını kullanmasını öneriyor. Daha fazla bilgi burada bulunabilir: https://github.com/chriso/validator.js/commit/2d5d6999541add350fb396ef02dc42ca3215049e –

İlgili konular