一尘不染

网站可以知道我是否正在运行用户脚本吗?

javascript

例如,Facebook.com是否可以在浏览器上运行版本控制脚本,并确定我是否正在使用脚本运行更改的HTML代码?

可以使用一个脚本来完成此操作,该脚本可以读取缓存中的HTML代码并生成某种哈希标签,然后将该哈希标签发送回服务器,并与发送给客户端的代码进行比较吗?


阅读 702

收藏
2020-05-01

共1个答案

一尘不染

是的,从理论上讲,站点可以推断出各种情况下脚本的存在。

这不是万无一失的,通常对于站点的可忽略的“威胁”来说是太多麻烦。(然后,一些网站管理员可能会对这种事情感到迷恋。;)

某些方法取决于脚本的工作方式(无特定顺序):

  1. 游戏或拍卖网站可以监视“竞标”点击的时间(速度和规律性)。

  2. 站点可以AJAX支持<script>节点数的计数,以寻找更多功能。

  3. 同样,网站可以AJAX支持页面的任何或所有内容,并将其与期望值进行比较。

  4. 可以记下额外的AJAX调用或不满足隐藏要求的AJAX调用(并使其看起来成功)。

  5. 如果脚本以unsafeWindow正确(错误)的方式使用,则页面可以检测到该脚本,甚至劫持(轻微)提升的特权。

  6. 可以检测到没有鼠标悬停事件之前的“点击”。我实际上已经看到了这种用法在野外使用。

  7. 页面的javascript通常可以检测到脚本生成的点击(等)与用户生成的点击不同。

最终,优点是对用户脚本编写者有利。网页采取的任何对策都可以在用户端进行检测并阻止。即使是自定义的,必需的插件或必需的硬件加密狗,也可以由熟练且有积极性的用户来破坏。

2020-05-01