2011-08-31 148 views
2

我需要遍历所有表单元素,并从中获取文本并提取任何不需要的值。值如':,.{}\|*&^%$#@!~`?/等,以确保我的网站上没有任何注射攻击。我是javascript noob,我需要一些帮助来做到这一点。遍历所有表单元素

有什么建议吗?

+0

您是否反对使用[jQuery](http://jquery.com/)等库? –

回答

1

既然你说jQuery是好的使用方法:

$(":input").each(function(){ 
    $(this).val($(this).val().replace(/[^\w\s]/gi, '')); 
}); 

虽然客户端验证可以给用户的体验是有益的,服务器端验证不应该被忽略。

+0

第一部分如何做任何事情作为答案? – Neal

+0

@Neal - 删除OP特别询问的字符的代码示例没有做任何回答? –

+0

哈哈,你改变了你的答案。看看我的评论的时间戳与更新的时间戳... – Neal

2

在服务器端进行验证。

这将是:-)


更安全有更安全的我的意思是用户不能玩的验证代码,使其因此他或她输入的经历时,他们不应该。

,或者如果用户关闭的JavaScript,你有没有服务器端验证,那么你的输入是不是在所有验证

+1

“多”更安全?意思是说,在Javascript中使用它在某种程度上是安全的? ;) –

+0

更安全的意思是,JavaScript验证只是一个很好的方法,它只会阻止最不确定的攻击者类型。 Theres一个简单的方法来打败JavaScript验证,关闭JavaScript。或者使用现代浏览器即时编辑功能来解除它。 – jzilla

+0

@Joseph - 查看更新:-P – Neal

4

如果你必须这样做,这里是一个基地(香草JavaScript的,没有库)从工作:

var els = document.forms[0].elements; 
for (var el in els) { 
    var val = el.value; 
    if (/[':,.{}\|*&^%$#@!~`?/]/.test(val)) { 
    // Potential issue, do your repairs here 
    el.value = fixedValue; 
    } 
} 

编辑:摆脱该死,我敢肯​​定,我应该已经逃脱的东西但我并不在乎。 :)

+1

+1。但是,如果你这样做,一定要做服务器端验证。如前所述,客户端验证很容易绕过。 –

+0

+1。虽然没有必要逃离管道(或其他任何东西)。 –

+0

这看起来不错。谢谢。我也做服务器端验证。这只是我对JavaScript的糟糕...... – SoftwareSavant