如何防止html / JavaScript代码修改

时间:2010-11-07 18:11:42

标签: javascript jquery html security

我想知道是否有办法阻止用户修改jQuery或javascript的html页面以改变其行为。

用户可以使用FireBug或Google Chrome开发人员栏等工具对其进行修改,以隐藏或显示div,向页面元素添加事件侦听器等。

我看到一些网页在加载页面时显示阻塞div,弹出窗口告诉回答一些问题。如果你回答它,div隐藏,你可以正常看到页面。 但是,如果您尝试使用FireBug隐藏阻止div,页面会重新加载,如果您没有在弹出窗口中提出问题,则无法正确查看页面。

我想知道如何阻止用户做这些事情。

非常感谢。

8 个答案:

答案 0 :(得分:7)

这是不可能的(这是非常好事)。

答案 1 :(得分:5)

打败问题中描述的方法:

  • 您可以使用控制台/工具的键盘快捷键(Chrome中的 Ctrl + Shift + I
  • 您可以使用资源/网络面板查看来源
  • 您可以在任何其他级别看到它,例如的Fiddler
  • 您可以使用书签轻松访问

,您无法阻止人们查看或修改您的源/脚本,如果他们想要...您最想阻止的是最能够绕过任何威慑力(那就是所有你所做的一切,威慑,而不是停止)你实施。

答案 2 :(得分:4)

实现它的唯一方法(在我看来)是在用户执行您想要的操作之前没有加载页面内容。在他回答了问题(或其他)后,你发送了一个内容的AJAX请求(当然,正如你所说,你也应该在服务器上验证答案,最好是在同一个请求中)。因此,您加载页眉,横幅和任何不重要的内容,但在用户执行操作之前,不应加载实际内容(比如博客上的文章)。

用户浏览器收到的所有内容都属于该用户,因此您无法对其执行任何操作。

答案 3 :(得分:2)

正如其他人已经说过的那样,无法控制最终用户对您发送的数据所做的事情。

可能会检测到Firebug和其他人使用的console对象,但是一旦获得该信息,您的网站可以对该信息做些什么?你不能禁用萤火虫或阻止它被使用,甚至不知道它是否被使用过。

最重要的是,一旦网页和javscript代码被发送到浏览器,它就无法控制。

最接近你想要的是将你的一些代码从Javascript移到服务器,用户将无法接触。但是,您仍然必须拥有一些客户端代码,这些代码仍将受到恶意用户的支配。

另一种选择是移动到Flash或类似的东西,最终用户无法直接访问代码或对象模型。这有它自己的缺点,你会逆转趋势,即从Flash转向HTML5和Javascript。

答案 4 :(得分:2)

当然,你不能阻止任何人做他想做的事情,但你可以让改变更加困难。

看看DOMEvents,尤其是Mutation-Events。 这些使您能够看到某些内容发生了变化(属性,删除/插入的节点,文本节点中的数据......)。例如,如果发生这种情况,您可以构建一个函数来监视一些您不必更改并重新加载页面的特殊属性。

答案 5 :(得分:1)

这是不可能的。当您向客户端发送代码时,客户端可以查看并修改它。只有在您的服务器上运行的代码才会受到保护。

答案 6 :(得分:0)

除非您确保(或强制)用户使用没有开发人员工具的浏览器,否则我认为不可能这样做。

答案 7 :(得分:0)

使用ajax获取远程信息不会向用户发送所有信息,例如民意调查等答案,在他使用ajax从服务器中选择一个选项后得到答案。客户端验证绝不是一件好事,这就是我以前如何删除其他愚蠢人员的数据库,除非人们正确地学习了真正的工作方式,否则他们应该以艰难的方式进行教学,例如在root访问漏洞的情况下丢失一切。

我不知道为什么HTML必须被阻止它没有被阻止,因为浏览器出来了他我可以使用套接字制作我自己的浏览器并将HTML转移到某个文本框并在我最喜欢的记事本中看到它/编辑等..

至于javascript你可以简单地在浏览器地址栏中发送javascript命令(浏览器支持黑客的方便程度如何,但它也用于与其他技术(如闪存)的互操作通信,因此它有一个邪恶/好的一面作为一切。)

如果你不知道你可以做到

javascript: alert('hi');

或者如果您的javascript游戏或其他任何具有全局范围的变量,您可以轻松地修改它

javascript: score=9999;damage=99999;
像我说的那样好,它可以清除坏程序员并让他们解雇或者将来教他们一课。

我看到许多大型网站仍然陷入SIMPLE XSS攻击(跨网站脚本),这令人困惑,这些程序员如何找到工作,我会做一个更好的面试或一些狗屎它是荒谬的