我想在网站上为用户提交的javascript
代码做一个可以在线演示的demo环境,但是怕用户提交恶意代码来做坏事,因此想实现一个安全的沙箱环境,让代码在执行时不会影响到主站的环境,这样也不会被xss了。
我想在网站上为用户提交的javascript
代码做一个可以在线演示的demo环境,但是怕用户提交恶意代码来做坏事,因此想实现一个安全的沙箱环境,让代码在执行时不会影响到主站的环境,这样也不会被xss了。
业务上保障吧, 比如只允许自己运行自己的, 如果是公共的就提示源码, 用户通过点击"运行按钮"再执行
技术上浏览器端要实现一个js沙盒基本是不可能的事
比如禁止了
alert(document.cookie); top.location.href="http://www.google.com/";
也禁止不了
alert(document['coo'+'kie']); window['to'+'p']['locat'+'ion']='http://www.google.com/';
如果忽略低版本的浏览器,可以考虑使用iframe的sandbox属性:
<iframe src="untrusted.html" sandbox="allow-scripts allow-forms"></iframe>
https://developer.mozilla.org/en-US/d...
http://ie.microsoft.com/testdrive/HTM...
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
给你推荐一个网站http://jsfiddle.net/,这个网站允许在线运行javascript。
你在编辑javascript的编辑框中输入要写的内容,然后菜单栏中有一个save按钮,点击完之后会看到有一个share的按钮,点击之后会看到iframe标签,将里面的内容复制到你要使用的地方就可以了。
使用代码类似:
效果如下:
