我该怎么做才能防止代码插入数组?

时间:2017-06-17 16:09:24

标签: javascript arrays

至于我的Template.JS具有阵列和克隆功能,我担心黑客可能会将恶意脚本输入数组并创建另一个带有恶意数据输入的克隆盒。如何防止有人将恶意数据输入数组?

这是我克隆盒子以及数组数据和“可操作”按钮的小提琴。

https://fiddle.jshell.net/NitroXAce/d1qro5g3/14/

如果有插件或脚本我可以输入以防止恶意数据在数组中,这将是非常棒的!我知道有一件事你无法在输入中插入代码。但我担心任何浏览器中的console.log都可能会干扰......?

2 个答案:

答案 0 :(得分:2)

假设数据来自您的服务器并且不是用户输入,那么最糟糕的是"黑客"可以做的就是自己的浏览器。没有多大意义。

话虽如此,你不应该使用内联事件处理程序。

理想情况下,您应该将HTML传递给加载到DOM中(有些人会认为用createElement等构建它会更好)并将事件处理程序附加到包含元素 - 即。使用事件委托。

但是那个实现细节。您的问题的关键答案是 - 假设一个受信任的数据源(即没有任何用户生成的) - 那么您就不必担心什么是恶意的"用户可能会投入。当收到表单提交时,您的服务器应该验证发送的内容以确保它有意义。

答案 1 :(得分:1)

我遇到了类似的问题,现在我正在学习PHP以创建更安全的网页。但是,阵列只能在客户端使用控制台或类似设备进行编辑。因此,即使有人更改了值,当另一个客户端加载页面时,值仍将是相同的。话虽如此,如果你要将值提交给另一个页面或服务器,你仍然必须使用服务器端语言,这样你就可以在服务器端语言中使用某种形式的RegEx来防止任何修改后的输入。 / p>

$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$client_name)) {

  $error_message .= 'The First Name you entered does not appear to be valid.<br />';

}
if(strlen($error_message) > 0) {

died($error_message);

}

以上是我的PHP提交表单中的一个小示例,它检查以确保该值仅使用允许的字符,然后如果名称使用无效字符则设置'$ error_message'。稍后检查通常为空的'$ error_message',如果它不为空或为null,则脚本退出并将错误消息发布到页面。