javascript - 检测 Ajax 调用中的 Javascript 篡改

标签 javascript jquery ajax security tampering

我们开发了一个 Javascript 文件供客户使用。 Javascript 片段对其运行的网站进行屏幕截图,然后通过 jQuery.post() 将其发送回我们的服务器

我们行业的性质意味着我们必须确保客户无法篡改文件。

因此,挑战在于我们需要确保屏幕截图是由我们服务器上托管的 JavaScript 文件生成的,而不是被复制或可能以任何方式篡改的文件。

我知道我可以使用以下方法获取脚本位置:

var scripts = document.getElementsByTagName("script"),
src = scripts[scripts.length-1].src;

但是如果客户端篡改了 SRC 的该部分,这将无济于事。

我可以采用什么方法来确保:

1) 该帖子是根据我们服务器上托管的 javascript 文件编写的

2) JavaScript 未被以任何方式篡改。

最佳答案

简短回答:

  1. 你不能。

  2. 你不能。

两者都源于这样一个事实:一旦你将某些东西交给客户端,它就不再由你掌控了。没有什么可以阻止用户在您和他们的机器之间放置代理、拦截内容的进程或篡改内容、 header 、cookie、请求、响应等的扩展。

但是,您可以通过防止 XSS(防止通过用户输入注入(inject)脚本)、使用 SSL(防止篡改连接)、应用 CSP 来强化您的应用程序(只允许页面上的某些内容)、添加CSRF token (确保表单经过服务器授权)等做法让被篡改的内容更难通过。

但是,这并不能阻止坚定的黑客找到漏洞。

关于javascript - 检测 Ajax 调用中的 Javascript 篡改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36480138/

相关文章:

javascript - 如何使用按钮加载 html 中的 .js 文件

javascript - 在两个div之间绘制div的路径

javascript - 存储将传递给 jQuery 插件的 JSON 数据的最佳实践

javascript - AngularJs 选择图表框架 d3.js 与 highcharts

javascript - 如何删除 "chrome is being controlled by automated test software"selenium javascript

javascript - AngularJS - 配置服务和 $routeProvider

Javascript:JavaScript 函数中的等待加载屏幕仅在我调试或暂停脚本时出现

javascript - jquery 延迟对象回调未触发

javascript - $.deferred() 链中的第一个 ajax 调用永远不会到达那里,但第二次单击按钮可以正常工作

python - SimpleHTTPServer 允许 ajax 请求执行 PY 文件?