我们开发了一个 Javascript 文件供客户使用。 Javascript 片段对其运行的网站进行屏幕截图,然后通过 jQuery.post() 将其发送回我们的服务器
我们行业的性质意味着我们必须确保客户无法篡改文件。
因此,挑战在于我们需要确保屏幕截图是由我们服务器上托管的 JavaScript 文件生成的,而不是被复制或可能以任何方式篡改的文件。
我知道我可以使用以下方法获取脚本位置:
var scripts = document.getElementsByTagName("script"),
src = scripts[scripts.length-1].src;
但是如果客户端篡改了 SRC 的该部分,这将无济于事。
我可以采用什么方法来确保:
1) 该帖子是根据我们服务器上托管的 javascript 文件编写的
2) JavaScript 未被以任何方式篡改。
最佳答案
简短回答:
你不能。
你不能。
两者都源于这样一个事实:一旦你将某些东西交给客户端,它就不再由你掌控了。没有什么可以阻止用户在您和他们的机器之间放置代理、拦截内容的进程或篡改内容、 header 、cookie、请求、响应等的扩展。
但是,您可以通过防止 XSS(防止通过用户输入注入(inject)脚本)、使用 SSL(防止篡改连接)、应用 CSP 来强化您的应用程序(只允许页面上的某些内容)、添加CSRF token (确保表单经过服务器授权)等做法让被篡改的内容更难通过。
但是,这并不能阻止坚定的黑客找到漏洞。
关于javascript - 检测 Ajax 调用中的 Javascript 篡改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36480138/