有没有一种安全的方法可以在网页中 运行 eval 并避免它访问页面其余部分的内容?
Is there a safe way to run eval in a webpage and avoid it to access the content of the rest of the page?
我想知道是否可以 运行 用户在网页中以安全的方式提供的代码。
我想添加用户可以动态更改的代码以更改某些页面行为,但我不希望他们使用漏洞。
例如,我想让用户编写一个以安全方式返回布尔值的方法,这样他们就不会在页面中注入恶意代码并更改 dom 也不会窃取其余页面的信息页面中的组件。
function( valuesToUse ) {
//userprovided logic returning true or false depending on the input
return valuesToUse.favouriteAnimal === "Lizard"
}
只要用户只运行他们自己的代码,就不需要任何安全措施。如果他们破坏了网站,他们只会为自己破坏它。
如果要共享这些代码,唯一可靠的方法是使用沙盒 IFRAME 和 运行 里面的所有内容(看看 SO 片段、JS fiddle 和类似网站的工作原理).在这种情况下,用户脚本将无法与主页交互。这是一篇关于该主题的好文章:https://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/
如果您需要 1) 可以与主页交互并且 2) 可以在用户之间共享的用户脚本,那么您必须发明自己的编程语言并将其即时编译为 javascript。 JS 中没有选项可以将内置 eval
.
沙盒化
我想知道是否可以 运行 用户在网页中以安全的方式提供的代码。
我想添加用户可以动态更改的代码以更改某些页面行为,但我不希望他们使用漏洞。
例如,我想让用户编写一个以安全方式返回布尔值的方法,这样他们就不会在页面中注入恶意代码并更改 dom 也不会窃取其余页面的信息页面中的组件。
function( valuesToUse ) {
//userprovided logic returning true or false depending on the input
return valuesToUse.favouriteAnimal === "Lizard"
}
只要用户只运行他们自己的代码,就不需要任何安全措施。如果他们破坏了网站,他们只会为自己破坏它。
如果要共享这些代码,唯一可靠的方法是使用沙盒 IFRAME 和 运行 里面的所有内容(看看 SO 片段、JS fiddle 和类似网站的工作原理).在这种情况下,用户脚本将无法与主页交互。这是一篇关于该主题的好文章:https://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/
如果您需要 1) 可以与主页交互并且 2) 可以在用户之间共享的用户脚本,那么您必须发明自己的编程语言并将其即时编译为 javascript。 JS 中没有选项可以将内置 eval
.