2011-11-07 24 views
1

我想从一个可编辑输入字段执行脚本点击一个按钮如何从JS上的输入字段执行脚本?

例如当,如果你输入“警报(” X“);”,我想提醒你的“X”,而且如果你输入“for(i = 0; i < 3; i ++){alert(i);}”我希望它执行它。

我该如何做到这一点?

编辑: eval()是唯一的解决方案吗?因为我看过,这是危险的:

+0

记得在做这件事时要非常小心。确保你信任你的用户,因为可以输入各种恶意JavaScript。 –

+0

的确如此,我在研究eval()时只是读了一些东西()https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval#section_5 – ajax333221

回答

3

请注意,你从用户输入取和脚本的网站上的上下文中运行它。因此,脚本可以执行浏览器/域上运行的JavaScript有能力执行的任何操作(包括cookie窃取,XSS,驱动恶意软件等)。

您可以切实做的减轻风险的唯一方法是不要eval()用户提供的内容。我建议考虑以下方案:

  1. 使用iframe作为一个环境中运行用户脚本: http://dean.edwards.name/weblog/2006/11/sandbox/
  2. 使用卡哈。它允许网站安全地嵌入来自第三方的DHTML Web应用程序,并实现嵌入式页面和嵌入式应用程序之间的丰富交互。它使用对象能力安全模型来实现各种灵活的安全策略。 http://code.google.com/p/google-caja/

编码愉快!

+0

+1真的很好的建议 – andyb

1
+2

尽量避免将人员发送到w3schools文档。以下是关于eval在MDN的一些信息:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval 如果你很好奇我为什么这样说,这个网站(虽然也许有点刺耳)总结它up:http://w3fools.com/ –

+0

感谢这一个http://w3fools.com/ 我学到了很多有趣的观点。 – Ruslan

1

使用eval()命令,它会评估并执行您传递给它的JavaScript。

0

使用eval一样的onclick =“的eval(的document.getElementById(‘your_input’))”

相关问题