我正在从服务器设置http-only cookie以存储一些用户信息,以便我可以在后端验证用户。假设有些黑客从某人的浏览器窃取了这个cookie并转到我的网页并使用document.cookie =" cookie_name = cookie_value"添加相同的cookie。如果没有cookie。如果有cookie,那么他可以使用chrome开发人员工具删除现有的纯http cookie,然后使用document.cookie =" cookie_name = cookie_value"在他的浏览器上。
现在,当服务器从黑客浏览器接到电话时,它会获取黑客设置的cookie,并对其进行验证。我怎么能阻止这个?
答案 0 :(得分:2)
Cookies让您容易受到跨站请求伪造及其亲属的攻击。不只是黑客窃取cookie,而且黑客借用已经拥有cookie的用户浏览器。这是为什么令牌在今天更常见的部分原因。
如果你必须使用cookies,你可以采取各种措施使它们稍微不安全 - 更新每个请求的cookie,验证请求IP不发送IP,配置你的网页不允许异地加载内容,强制重新登录任何主要操作,以及其他用户验证方式。它们都不是完美的。
答案 1 :(得分:1)
简单:你做不到。 http-only
用于与验证不同的目的。您对黑客将使用浏览器的假设是您遇到的第一个问题。因为浏览器限制我,我永远不会使用浏览器这样的东西。我会使用自己的工具伪造一个HTTP请求,并使用http-only
发送一个标头,并将您想要的任何内容发送到您的服务器。
如果要验证Cookie,则需要实施自己的解决方案,而不是依赖浏览器机制。例如,您可以将cookie绑定到某个IP范围,并在cookie-key或cookie-value的末尾添加某种令牌。
一般来说,做@bryanx所说的话。不要使用COOKIES存储数据。它们适用于会话令牌等。
答案 2 :(得分:0)
不要使用cookies。
Cookie是在会话之间保留信息所必需的,但是只要您在客户端上留下信息,就可以自行解决您所描述的潜在问题。如果您只需要在用户会话期间维护的信息,您可能需要考虑使用$ _SESSION而不是cookie。
如果您必须使用Cookie,您可能需要考虑构建逻辑,如果Cookie与以前经过身份验证的设备不匹配,则会再次向用户提示其凭据。有很多方法可以解决这个问题,只需要有创意。