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

标签 php security cookies

我目前正在尝试想办法让用户在一定时间内保持登录状态。我遇到过网站 cookie 的使用。作为示例,我的开发环境是 PHP

addcookie('名称', '值', time() + 3600, '/');

我知道您可以为每个用户生成一个大的、唯一的 key 作为存储在数据库中的值,以供安全引用,然后真正操纵用户的唯一方法是使用跨 session 窃取 session 站点脚本。

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

我不确定在数据库中查询 key 之前是否要删除 key ,因为我不确定是否存在此漏洞 - 或类似的漏洞。

任何引用资料都会很棒,因为我觉得安全性很有趣,尤其是防止未经授权的访问。

我只了解有关 Cookie 中毒的任何信息,并且很想了解更多信息以及如何预防事情或构建防止攻击的基础设施。

编辑:我不是在问如何保护任何东西,只是问什么是 Cookie 中毒,以及也许可以用来阻止人们真正做到这一点的方法(即使这只是提示!)

最佳答案

正如您提到的,通过跨站点脚本 (XSS) 进行 session 劫持很常见。

为了防止 XSS,您应该始终在将所有用户 session 值打印到屏幕之前对其进行过滤和转义。然而,一些错误可能会被忽视,或者一段遗留代码可能容易受到攻击,因此利用浏览器针对 XSS 的保护是有意义的。

通过在设置 session cookie 时指定 HttpOnly 标志,您可以告诉用户浏览器不要将 cookie 暴露给客户端脚本(例如 JavaScript)。这使得攻击者更难劫持 session ID 并伪装成受影响的用户。

 session.cookie_httponly = 1

确保 PHP 仅对 session 使用 cookie 并禁止将 session ID 作为 GET 参数传递也是一个好主意:

session.use_only_cookies = 1

提高应用程序中 PHP session 安全性的另一个重要方法是在 Web 服务器上安装 SSL 证书,并强制所有用户交互仅通过 HTTPS 进行。

PHP 有一个 ini 设置可以帮助您确保 session cookie 仅通过安全连接发送:

 session.cookie_secure = 1

引用号:https://www.simonholywell.com/post/2013/05/improve-php-session-cookie-security/

关于php - 网站 Cookie - 是否存在任何安全问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35721065/

相关文章:

php - Ubuntu 命令行报告 PHP 版本为 5.3.3 但 phpinfo 显示为 5.5.9

php - ORDER BY 不与 GROUP BY 一起使用

php - codeigniter 查询生成器和事件记录 sql 注入(inject)

java - 使用 Arquillian 测试安全 EJB

javascript - AJAX 请求的安全性

php - 如何在 php 中发送 cookie 值的正确翻译

javascript - 删除 cookie 数组 (WebExtensions)

php - 如何在php中动态创建嵌套数组

javascript - Cookie 每 30 天显示一个弹出窗口

php - 如何根据父下拉列表选择动态选择子下拉列表