检测Ajax调用中的Javascript篡改

检测Ajax调用中的Javascript篡改,javascript,jquery,ajax,security,tampering,Javascript,Jquery,Ajax,Security,Tampering,我们有一个Javascript文件,我们已经为我们的客户开发使用。Javascript代码片段截取运行它的网站的屏幕截图,然后通过jQuery.post()将其发送回我们的服务器 我们行业的性质意味着我们必须确保文件不会被客户篡改 因此,我们面临的挑战是,我们需要确保屏幕截图是由服务器上托管的javascript文件生成的,而不是被复制或以任何方式篡改的文件 我知道我可以使用以下方法获取脚本位置: var scripts = document.getElementsByTagName("scri

我们有一个Javascript文件,我们已经为我们的客户开发使用。Javascript代码片段截取运行它的网站的屏幕截图,然后通过jQuery.post()将其发送回我们的服务器

我们行业的性质意味着我们必须确保文件不会被客户篡改

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

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

var scripts = document.getElementsByTagName("script"),
src = scripts[scripts.length-1].src;
但如果客户机篡改了SRC的这一部分,这将没有帮助

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

1) 这篇文章是从我们服务器上托管的javascript文件制作的

2) javascript没有被任何方式篡改。

简短回答:

  • 你不能

  • 你不能

  • 这两者都源于这样一个事实:一旦你把东西交给客户,它就不在你的掌握之中了。没有什么可以阻止用户在您和他们的机器之间放置代理,这是一个拦截内容的过程,或者是一个篡改内容、标题、cookie、请求、响应等的扩展

    但是,您可以通过防止XSS(防止通过用户输入注入脚本)、使用SSL(防止篡改连接)、应用(仅允许页面上的某些内容)、添加CSRF令牌(确保表单得到服务器授权)和其他做法来强化应用程序,以使篡改内容更难通过

    但同样,这不会阻止一个坚定的黑客找到一个机会。

    简短回答:

  • 你不能

  • 你不能

  • 这两者都源于这样一个事实:一旦你把东西交给客户,它就不在你的掌握之中了。没有什么可以阻止用户在您和他们的机器之间放置代理,这是一个拦截内容的过程,或者是一个篡改内容、标题、cookie、请求、响应等的扩展

    但是,您可以通过防止XSS(防止通过用户输入注入脚本)、使用SSL(防止篡改连接)、应用(仅允许页面上的某些内容)、添加CSRF令牌(确保表单得到服务器授权)和其他做法来强化应用程序,以使篡改内容更难通过


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

    1)您只能验证请求头以确保它来自何处2)您无法验证100%的客户端Javascript。。这是整个过程的一部分。3) 这更多是针对SecurityExchange IMO的。您基本上必须接受客户端受客户端控制,而不是服务器。您是否可以混淆代码,并在post中以文本形式发送脚本内容的副本,然后将其与服务器上的版本进行比较,以确定其是否被篡改@JeramiahHarland——我不认为这在技术上是可行的,因为有人可以用预期的脚本替换发送脚本副本的代码部分。我们已经混淆了脚本。1)您只能验证请求头以确保它来自何处2)您无法验证100%客户端Javascript。。这是整个过程的一部分。3) 这更多是针对SecurityExchange IMO的。您基本上必须接受客户端受客户端控制,而不是服务器。您是否可以混淆代码,并在post中以文本形式发送脚本内容的副本,然后将其与服务器上的版本进行比较,以确定其是否被篡改@JeramiahHarland——我不认为这在技术上是可行的,因为有人可以用预期的脚本替换发送脚本副本的代码部分。无论如何,我们已经混淆了脚本。关于#1-不是我的专长,但你不能签署帖子请求。我想知道的是,是否可以通过某种独特的标记(在短时间内有效)嵌入到JS中,每次加载都经过我们的服务器授权,然后在发送屏幕截图时在服务器端再次确认。你认为这可以确保请求来自我们的javascript吗?@aaroncatlin:简短回答:仍然没有。你的javascript可以做任何事情,其他一些代码假装是你的javascript可以做的。关于#1-不是我的专长,但是你不能签署POST请求吗?我想知道的是,在每次加载时,是否可以在JS中嵌入某种独特的令牌(在短时间内有效),该令牌由我们的服务器授权,然后在发送屏幕截图时在服务器端再次确认。你认为这可以确保请求来自我们的javascript吗?@aaroncatlin:简短回答:仍然没有。javascript可以做的任何事情,其他一些假装是javascript的代码都可以做。