2017-06-17 20 views
1

就我的Template.JS具有数组和克隆的威力而言,我担心黑客可能会将恶意脚本输入到数组中,并用恶意数据条目创建另一个克隆框。我如何防止某人将恶意数据输入到数组中?我能做些什么来防止在数组中插入代码?

这里是我的小提琴克隆框以及阵列数据和'功能'按钮。

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

如果有一个插件或脚本,我可以进入,防止恶意数据是在数组中,这将是真棒!我知道有一件事情你不能在代码中插入代码。但我担心在任何浏览器中的console.log可能会干涉... ...?

+0

这是前端代码?你不能真正阻止任何人在他们自己的浏览器中修改js .. – aw04

+0

我没有看到任何模板或克隆在你的小提琴。你在说什么?如果你问是否有办法阻止某人在自己的浏览器中篡改该页面,那么不会。你可以做的最好的办法是使代码丑化,以便很难说明代码的功能,并确保在服务器端进行验证。 – JLRishe

+0

通过“克隆”我使用数组的长度来创建框或模板来插入图像,标题,价格和按钮功能 –

回答

2

假设数据来自您的服务器,而不是用户输入,那么“黑客”最糟糕的就是自己的浏览器。没有多少意义。

这就是说,你不应该使用内联事件处理程序。理想情况下,你应该把HTML传递给加载到DOM中(有人会认为用createElement等构建它会更好),并将事件处理程序附加到包含的元素 - 即。使用事件代表团。

但这是实施细节。对于你的问题的关键答案是 - 假设一个值得信赖的数据源(即没有用户生成的) - 那么你不需要担心“恶意”用户可能投入什么。当接收到表单提交时,你的服务器应验证所发送的内容以确保其有意义。

1

我有一个类似的问题,现在我正在学习PHP来创建更安全的网页。但是,只能使用控制台或类似的方式在客户端编辑数组。所以即使有人更改了值,当另一个客户端加载页面时,值仍然是相同的。这就是说,如果你将要提交的价值到另一个页面或服务器,你将不得不使用服务器端语言,所以你可以在服务器端语言使用某种形式的RegEx来防止任何修改的输入。

$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',如果它不为空或为空,则脚本退出并将错误消息发布到页面。

相关问题