网站Cookie - 是否存在任何安全问题?

时间:2016-03-01 10:57:36

标签: php security cookies

我目前正在尝试一种让用户登录一段时间的方法。我遇到过网站cookie的使用。我的开发环境就是PHP

addcookie('name', 'value', time() + 3600, '/');

据我所知,您可以生成一个大的,唯一的密钥作为存储在数据库中的每个用户的值,以供安全性参考,然后真正操纵用户的唯一方法是使用Cross进行会话窃取Site Scripting。

我很想知道,由于addcookie()中的最后一个参数 - 示例中存在/ - 是否有人可以设置自己的域并实际添加他们自己的cookie到另一个域?

我不确定是否在数据库中查询之前剥离密钥,因为我不确定是否存在此漏洞 - 或类似的任何内容。

任何引用都会很棒,因为安全性是我感兴趣的,特别是未经授权的访问预防。

我只知道关于Cookie中毒的任何事情,并希望了解更多以及如何防止事情或建立防止攻击的基础设施。

编辑:我不是问Secure怎么做,只是Cookie中毒是什么,也许可以用来防止人们真正做到这一点(即使只是提示!)

1 个答案:

答案 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/