我想在网站上运行用户提供的 javascript,但在此之前,我需要(从算法上)检查提供的 javascript 源是否遵循一组规则(例如,不使用 eval() 函数,不使用 setTimeout()/setInterval( )函数等)。
此外,检查来源是否有效是一件好事。 工具可以是任何东西,因为是在服务器端执行的。 您有任何对此可能有用的想法吗?
编辑:代码将在 Web Worker 环境中执行
最佳答案
仅通过扫描源代码无法判断脚本是否将使用禁止的函数。您可以更改脚本执行的环境。
您所做的不是简单的文本搜索。 JavaScript 是一种非常动态的语言,您可以有效地调用“禁止”函数,而无需在源代码中找到该函数的名称!
window['e'+'v'+'a'+'l']
也不可能简单地执行脚本并跟踪访问哪些函数,因为您无法访问所有代码路径。
要禁止使用特定函数,您必须在不存在这些函数的沙箱中运行代码。
关于javascript - 检查 javascript 源是否使用了禁止的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14132489/