没有设置安全标志和 HttpOnly 标志的 Cookie
Posted
技术标签:
【中文标题】没有设置安全标志和 HttpOnly 标志的 Cookie【英文标题】:Cookie without Secure flag and HttpOnly flag set 【发布时间】:2012-10-13 23:13:04 【问题描述】:最近在我们的一个应用程序上运行了一次扫描,它返回了以下 1 个安全威胁:
1.Cookies NotMarked As Secure::Cookie 没有设置安全标志
2.没有设置HttpOnly标志的Cookie::没有设置HttpOnly标志的Cookie
$this->cache_ptr = new CACHE($_COOKIE["sess"], 0, 0);
CACHE 是一个用户构建的库,使用 Sessions 等。
我不确定将 cookie 标记为安全并使用 HttpOnly 标志设置 cookie 的正确语法。此外,这是在 php 4 中运行的遗留应用程序。 有人可以帮我解决这个问题或给我指点资源吗?
编辑: 我执行了斯文的建议。有什么方法可以测试安全功能吗?
另外,由于我使用的是 php4(最终必须更新) 我不能在 setcookie 函数中使用 httponly。 那么这是否意味着,我需要在 setcookie 函数之前添加以下行?
header("Set-Cookie: hidden=value; httpOnly");
它会干扰我的 setcookie 功能吗?
【问题讨论】:
【参考方案1】:使用setcookie()
。阅读它here。将第六个参数设置为 true 以使 cookie 安全。
【讨论】:
httponly 是另一个可以用setcookie()
设置的参数
另外php版本小于5,不支持httponly参数。有没有办法暂时不升级php版本。
如果您没有该版本,则必须使用标头功能手动设置 cookie:header( "Set-Cookie: name=value; httpOnly" );
【参考方案2】:
您显示的代码未设置 cookie。它可能会触发设置 cookie,但本质上您必须查看 CACHE
类,看看那里发生了什么。
您正在寻找setcookie()
的函数调用,如果找不到,则寻找header('Set-Cookie...')
。
您必须更改 setcookie() 以包含可选参数的所有默认值,直到最后您将最后两个设置为 true 以实现安全和 httponly。
看看手册:http://de1.php.net/setcookie
【讨论】:
感谢 Landen 和 sven。有没有办法可以测试它是否安全且仅限 http?我没有最初运行时使用的安全扫描软件。 Firebug 会显示结果。另外检查来自服务器的Set-Cookie
响应标头也可以。
我可以给它添加安全功能吗:header("Set-Cookie: name=value; httpOnly secure");以上是关于没有设置安全标志和 HttpOnly 标志的 Cookie的主要内容,如果未能解决你的问题,请参考以下文章
在 codeigniter 中使用 HTTPOnly 标志设置 cookie
在我的 iOS 应用程序中,是不是有任何理由为会话 cookie 设置 HttpOnly 和 Secure 标志?
如何在 ngCookies 中设置 httpOnly 标志?
在 PHP 中的 PHPSESSID cookie 上设置 httpOnly 和安全