我目前正在尝试一种让用户登录一段时间的方法。我遇到过网站cookie的使用。我的开发环境就是PHP
。
addcookie('name', 'value', time() + 3600, '/');
据我所知,您可以生成一个大的,唯一的密钥作为存储在数据库中的每个用户的值,以供安全性参考,然后真正操纵用户的唯一方法是使用Cross进行会话窃取Site Scripting。
我很想知道,由于addcookie()
中的最后一个参数 - 示例中存在/
- 是否有人可以设置自己的域并实际添加他们自己的cookie到另一个域?
我不确定是否在数据库中查询之前剥离密钥,因为我不确定是否存在此漏洞 - 或类似的任何内容。
任何引用都会很棒,因为安全性是我感兴趣的,特别是未经授权的访问预防。
我只知道关于Cookie中毒的任何事情,并希望了解更多以及如何防止事情或建立防止攻击的基础设施。
编辑:我不是问Secure
怎么做,只是Cookie中毒是什么,也许可以用来防止人们真正做到这一点(即使只是提示!)
答案 0 :(得分:2)
正如您所提到的,通过跨站点脚本(XSS)进行会话劫持很常见。
要防止XSS,您应始终在将所有用户会话值打印到屏幕之前对其进行过滤和转义。但是,一些漏洞可能会漏掉,或者一段遗留代码可能容易受到攻击,因此对XSS使用浏览器保护也是有意义的。
通过在设置会话cookie时指定HttpOnly标志,您可以告诉用户浏览器不要将cookie暴露给客户端脚本(如JavaScript)。这使得攻击者更难以劫持会话ID并伪装成受影响的用户。
session.cookie_httponly = 1
确保PHP仅对会话使用cookie并禁止将会话ID作为GET参数传递时,这也是一个好主意:
session.use_only_cookies = 1
提高应用程序中PHP会话安全性的另一个重要方法是在Web服务器上安装SSL证书,并强制所有用户交互仅通过HTTPS进行。
有利的是,PHP有一个ini设置可以帮助您确保会话cookie仅通过安全连接发送:
session.cookie_secure = 1
价:https://www.simonholywell.com/post/2013/05/improve-php-session-cookie-security/