Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环遍历所有表单元素_Javascript_Validation - Fatal编程技术网

Javascript 循环遍历所有表单元素

Javascript 循环遍历所有表单元素,javascript,validation,Javascript,Validation,我需要遍历所有表单元素,从中提取文本并提取任何不需要的值。诸如“”:,.{}\\\*&^%$\\@!~`之类的值/等等,以确保我的网站上没有任何注入攻击。我是一个javascript noob,我需要一些帮助 有什么建议吗?在服务器端进行验证 那里会更安全:-) 所谓更安全,我的意思是用户不能随意使用验证代码,以使其输入在不应该的情况下通过 或者,如果用户关闭了javascript,并且您没有服务器端验证,那么您的输入根本就没有验证,,如果您必须这样做,这里有一个基础(普通javascript

我需要遍历所有表单元素,从中提取文本并提取任何不需要的值。诸如“
”:,.{}\\\*&^%$\\@!~`之类的值/
等等,以确保我的网站上没有任何注入攻击。我是一个javascript noob,我需要一些帮助


有什么建议吗?

在服务器端进行验证

那里会更安全:-)


所谓更安全,我的意思是用户不能随意使用验证代码,以使其输入在不应该的情况下通过


或者,如果用户关闭了javascript,并且您没有服务器端验证,那么您的输入根本就没有验证

如果您必须这样做,这里有一个基础(普通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;
  }
}

编辑:逃走该死,我肯定我应该逃走那里的东西,但我不太在乎。:)

既然您说过jQuery可以使用:

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

虽然客户端验证有助于用户体验,但不应跳过服务器端验证。

“更”安全吗?也就是说,在Javascript中使用“某种程度上”是安全的更安全意味着javascript验证只是一种精确的方法,它只会阻止最不确定的攻击者类型。有一种简单的方法可以阻止javascript验证,关闭javascript。或者使用现代浏览器的即时编辑功能来解除它。我同意服务器端验证是必须的。但这并不意味着不能添加客户端验证。一些最好的Web应用程序在您提交表单之前都有输入验证,可以告诉您哪里做错了。即时反馈很好。你反对使用像这样的库吗?第一部分是如何作为答案的?@Neal-一个代码示例,它删除了OP特别询问的字符,而不是作为答案的。哈哈,你改变了答案。看看我的评论的时间戳和你的更新的时间戳…@Neal-唯一添加的代码是正则表达式,OP可以很容易地将其抛出。我回来后决定把它给他。与未提供的代码示例相比……任何与此白名单不匹配的内容都将被替换:a-z、a-z、0-9,包括uz(下划线)字符和空白字符(制表符、换行符、空格等)+1。但如果您这样做,请确保也要进行服务器端验证。如前所述,客户端验证很容易绕过。+1。虽然没有必要逃离管道(或者其他任何东西),但看起来很不错。谢谢我也做服务器端验证。只是我在JavaScript方面太差劲了…@Joseph Silber:事实上,我并不是在逃避管道——好吧,不是故意的——这是DmainEvent想要检查的字符之一(我复制并粘贴了他的小块)。然后你必须逃避斜杠:P