输入字段以放置javascript / json和安全问题

时间:2010-04-15 13:06:52

标签: javascript security json

我想让我的网页访问者访问textarea,在那里他们可以编写一些javascript来配置某些功能。

想象一下javascript是这样的:

{
   最大:100;
   allowFeedback:假;
   filterEnabled:true;
}

我想评估他们写的内容然后我的javascript会根据您的选择做一些事情:

所以这将是:

var userCode = document.getElementById(“textarea”)。value;
   var result = eval(userCode);
   ..    if(result.filterEnabled){...}
   if(result.allowFeedback){...}    ...

问题是: 用户真的可以在那里输入任何javascript吗? 恶意的东西,错的东西 在执行之前,我该怎么做才能验证其代码?

非常感谢

5 个答案:

答案 0 :(得分:1)

阅读有关JSON和安全性的文章。代码和示例也出现在那里 - Parse JSON using JSON Parser or eval()!。这应该对你有所帮助。

答案 1 :(得分:0)

如果你eval他们写了什么,他们确实可以编写并运行你可以在eval电话的地方写的任何javascript。我建议只允许非常有限的语法(例如variable=value,使用一组有限的允许变量和值),然后解析它。

编辑:如果可用,您还可以使用JavaScript的JSON解析器而不是eval,例如JSON.parse

答案 2 :(得分:0)

阅读此on CSRF ...评估任何用户输入并不是一个好主意,相信我。

答案 3 :(得分:0)

您发布的代码容易受到DOM Based XSS的攻击,并且所有利用XSS的规则仍然适用。它通常不会在JavaScript中找到漏洞,但这是一个很好的例子。我会避免使用此代码。如果您真的想要此功能,那么您应该将它放在自己的域上,该域没有会话/身份验证/任何有价值的东西。

答案 4 :(得分:0)

我很久以前就有类似的用法。这似乎是幼稚的答案,但在评估之前,您可以解析像< >和。特别。所以内容将不再是有效的程序。主要是脚本包含点和< >并且可以过滤以进行评估。或者被其他一些角色所取代。