黑客可以将值注入我的jQuery函数吗?

时间:2012-08-25 17:15:03

标签: javascript jquery

我一直在从我的网络应用中收到意外数据。黑客可以在javascript函数中更改值吗?

如果我的代码是:

my_function('new_item',10,20,30,40);

'new_item'参数是否可能被篡改?我该怎么做才能防止这种情况发生?

2 个答案:

答案 0 :(得分:9)

是的,任何用户都可以更改您发送到浏览器的任何JavaScript - “黑客”这个词被夸大了,因为即使是精明的用户也完全有能力使用Firefox的Firebug或Chrome / Safari的股票文档检查员分开。这就是Web开发人员重复公理的原因:

永远不要相信用户输入!

在任何情况下都不应该信任用户发送的任何内容。在不转义的情况下,不要将任何内容插入数据库,除非会话可以验证,否则不要信任登录凭据。任何你信任的东西都是一个漏洞,有一天每个漏洞都会被利用。

不要试图保护您的JavaScript,这是不可能的。相反,请验证用户尝试执行的所有操作:如果他们请求不允许查看的页面,即使JavaScript请求,也不要将其提供给客户端。

答案 1 :(得分:-2)

你无法做到确保所有客户端代码都是安全的,你可以采取一些方法来帮助它变得更加困难,但是作为一个更高级的黑客,它们根本没有帮助很容易过去。

例如,如果您使用

<script></script>

要通过其他文档在代码中链接的标记。例如,你可以说有4个脚本。脚本1,2&amp; 3相互链接,直到它们到达4,其中主要功能是。这不会阻止任何事情,它只会让初学者“黑客”/篡改人员变得更难。 - 但它在chrome的javascript控制台上才最有效。 Firebug不关心脚本放在DOM上的位置。因此,它只是证明您不应花时间尝试隐藏您的javascript代码或尝试完全保护它(不可能),您应该花时间验证后端的东西。

请记住,没有办法完全阻止黑客篡改您的客户端代码。在客户端信任任何东西都是明智之举。 PHP可以非常方便地进行任何后端检查。还要确保在PHP中防止SQL注入。但是,不要只考虑你的安全,因为你使用了mysql_real_escape_string()以太。在这里阅读更多相关信息:SQL injection that gets around mysql_real_escape_string(),我个人推荐PDO作为您的数据库代码。

只需将您的服务器端代码(如PHP)视为主要城堡的护城河。现在把客户端代码想象成护城河周围的木栅栏。任何一名士兵都可以轻松地敲下木栅栏,但他们必须深入护城河才能到达你的守卫 - (他们必须通过PHP验证),如果护城河没有防护(没有PHP验证,然后士兵可以在没有人看的情况下挖掘出来。

^现在想想你的网站是怎样的。护城河是否容易被挖掘?如果是这样的话会得到一些警卫(确定你已经确保了php验证。)

在客户端,你永远不应该相信任何事情。从来没有为这个木栅栏提供保护。即使是javascript守卫也无法保护它。

[我已经编辑了很多这个答案,因为起初我很清楚我的意思是什么。]