好的,我一直想知道这两项行动是否可行:
user=basic
或其他东西(这只是一个例子),有人可以将其更改为user=admin
吗?我希望这种事情是不可能的,或者我非常喜欢这个事情!
答案 0 :(得分:6)
在这种情况下,我很遗憾地说你几乎是f **** d。
你必须始终认为客户端的一切都可以被一些邪恶的黑客操纵。这包括cookie和JavaScript。
Firefox使用Cookie的Edit Cookies扩展程序和Firebug编辑JavaScript(以及HTML和CSS),使这一过程非常简单。
答案 1 :(得分:2)
用户和javascript都可以操纵cookie数据。但是,broswers具有可选(可能是默认)保护,以防止跨域设置cookie数据。
答案 2 :(得分:2)
我认为修改cookie应该非常简单,因为它们存储在本地。我检查过并在firefox中有一堆sqlite文件似乎有这个。我对sqlite知之甚少,但似乎修改它们应该不是问题(特别是因为你可以在这种情况下访问浏览器源代码,看看它是如何与它们交互的):))
我不确定javascript修改,它肯定可以通过搞乱低级HTTP内容(拦截请求和使用修改后的代码发送虚假响应)来完成。反跨站点脚本策略有一点帮助,但我不会太依赖它们,应该有安全检查服务器,以便更安全。
答案 3 :(得分:1)
是/否,您的域名只能操纵您的域名设置的Cookie。您在youdomain.com
或localhost
上的JS脚本无法编辑由facebook.com
设置的Cookie。想一想,如果你能做到这一点,互联网就会崩溃。
但是,用户可以随意编辑自己的Cookie。
是
答案 4 :(得分:1)
2件事:
答案 5 :(得分:1)
是的,是的,甚至有tools specifically designed to make doing so easy。获得正确的安全性很难,不幸的是,这是一个更环保的Web开发人员经常完全错过的东西。
您可以真正安全地存储在Cookie中的是登录 令牌 。基本上,每次用户登录时,都会生成GUID之类的内容。将GUID保存到用户记录中的列(如LoginToken
或其他),然后将其cookie设置为相同的GUID。当他们退出时,清除记录的LoginToken
。然后,当请求进入时,您可以只查询数据库中LoginToken
等于cookie中的值的用户。可以安全地假设通过持有令牌,请求者实际上是令牌所代表的用户。
如果恶意用户编辑了他们的cookie,他们只会注销,因为你将一个未找到的令牌视为完全没有令牌。
在服务器上,一旦您检查了令牌,您就然后确定该用户是否具有管理员权限(通常通过查看他们的记录)。
就能够修改脚本而言,这只是生活中的一个事实。您的服务器代码必须假定每个请求都是恶意的。在您执行任何事情之前,请验证其令牌并验证他们是否可以执行他们要求的操作。