关于cookie和javascript的安全问题

时间:2011-01-14 20:55:56

标签: php javascript ajax security cookies

好的,我一直想知道这两项行动是否可行:

  1. 操纵cookie。我的意思是,如果我登录到Facebook,它将在我的浏览器中保存一个cookie。我可以编辑它吗?我想是因为它被设置到我的浏览器中而不是在本地设置。
  2. 操纵javascript脚本。我的意思是,由于浏览器会读取javascript并且每个用户都可以阅读该语言,是否可以对其进行编辑?例如,假设我有一个ajax调用发送数据字符串,如user=basic或其他东西(这只是一个例子),有人可以将其更改为user=admin吗?
  3. 我希望这种事情是不可能的,或者我非常喜欢这个事情!

6 个答案:

答案 0 :(得分:6)

在这种情况下,我很遗憾地说你几乎是f **** d。

你必须始终认为客户端的一切都可以被一些邪恶的黑客操纵。这包括cookie和JavaScript。

Firefox使用Cookie的Edit Cookies扩展程序和Firebug编辑JavaScript(以及HTML和CSS),使这一过程非常简单。

答案 1 :(得分:2)

用户和javascript都可以操纵cookie数据。但是,bro​​swers具有可选(可能是默认)保护,以防止跨域设置cookie数据。

答案 2 :(得分:2)

我认为修改cookie应该非常简单,因为它们存储在本地。我检查过并在firefox中有一堆sqlite文件似乎有这个。我对sqlite知之甚少,但似乎修改它们应该不是问题(特别是因为你可以在这种情况下访问浏览器源代码,看看它是如何与它们交互的):))

我不确定javascript修改,它肯定可以通过搞乱低级HTTP内容(拦截请求和使用修改后的代码发送虚假响应)来完成。反跨站点脚本策略有一点帮助,但我不会太依赖它们,应该有安全检查服务器,以便更安全。

答案 3 :(得分:1)

  1. 是/否,您的域名只能操纵您的域名设置的Cookie。您在youdomain.comlocalhost上的JS脚本无法编辑由facebook.com设置的Cookie。想一想,如果你能做到这一点,互联网就会崩溃。

    但是,用户可以随意编辑自己的Cookie。

答案 4 :(得分:1)

2件事:

  • 验证数据客户端的可用性,但也在服务器端进行验证以防止有人篡改数据
  • 加密Cookie以使其更难操作

答案 5 :(得分:1)

是的,是的,甚至有tools specifically designed to make doing so easy。获得正确的安全性很难,不幸的是,这是一个更环保的Web开发人员经常完全错过的东西。

您可以真正安全地存储在Cookie中的是登录 令牌 。基本上,每次用户登录时,都会生成GUID之类的内容。将GUID保存到用户记录中的列(如LoginToken或其他),然后将其cookie设置为相同的GUID。当他们退出时,清除记录的LoginToken。然后,当请求进入时,您可以只查询数据库中LoginToken等于cookie中的值的用户。可以安全地假设通过持有令牌,请求者实际上是令牌所代表的用户。

如果恶意用户编辑了他们的cookie,他们只会注销,因为你将一个未找到的令牌视为完全没有令牌。

在服务器上,一旦您检查了令牌,您就然后确定该用户是否具有管理员权限(通常通过查看他们的记录)。

就能够修改脚本而言,这只是生活中的一个事实。您的服务器代码必须假定每个请求都是恶意的。在您执行任何事情之前,请验证其令牌并验证他们是否可以执行他们要求的操作。