Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 站点Cookies-是否存在任何安全问题?_Php_Security_Cookies - Fatal编程技术网

Php 站点Cookies-是否存在任何安全问题?

Php 站点Cookies-是否存在任何安全问题?,php,security,cookies,Php,Security,Cookies,我目前正在想办法让用户登录一段时间。我遇到了网站cookie的使用。我的开发环境是PHP addcookie('name','value',time()+3600',/') 我知道,为了安全起见,可以为数据库中存储的每个用户生成一个大的、唯一的密钥作为值,然后真正操纵用户的唯一方法就是使用跨站点脚本进行会话窃取 我很想知道,由于addcookie()(示例中存在/)中的最后一个参数,是否有人可以设置自己的域并将自己的cookie添加到另一个域 我不确定在数据库中查询密钥之前是否剥离密钥,因为我不

我目前正在想办法让用户登录一段时间。我遇到了网站cookie的使用。我的开发环境是
PHP

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

我知道,为了安全起见,可以为数据库中存储的每个用户生成一个大的、唯一的密钥作为值,然后真正操纵用户的唯一方法就是使用跨站点脚本进行会话窃取

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

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

任何参考资料都很好,因为安全性是我感兴趣的东西,尤其是未经授权的访问预防

我只知道关于饼干中毒的任何事情,我想了解更多,以及如何防止事情发生,或者建立一个基础设施来防止攻击


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

正如你提到的,通过跨站点脚本(XSS)进行会话劫持是很常见的

为了防止XSS,在将所有用户会话值打印到屏幕之前,您应该始终过滤并转义它们。然而,一些bug可能会漏掉,或者一段遗留代码可能容易受到攻击,因此也可以利用浏览器保护来抵御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

Ref:

只要设置了cookie的域,被攻击的can
cookie毒药的唯一方法就是通过XSS或访问存储cookie的计算机。看,我一直在研究,我看到的正好相反。显然,
cookies
可以使用名为
数据篡改器的东西进行
编辑
?这是用来改变购物车的价格,试图欺骗基础设施的价格,让它一无所获@为了确保我理解,您描述的场景是1)我访问了您的网站,得到了cookie 2)我访问了另一个篡改了您的cookie的网站3)我再次访问了您的网站,但出现了一些问题。如果那是正确的,那么不,那是不可能的。首先,因为第二个网站无法访问您的cookie,甚至第二个网站发送的脚本也无法访问您的cookie,这是由于现代浏览器中的安全实现。这种现象被称为“跨站点烹饪”,但我的评论暗示,您的网站中没有XSS漏洞。因为如果您这样做,那么受攻击的用户可以访问和修改cookie。由于脚本来自您的域,浏览器将授予对cookie的访问权限。请参阅,情况就是这样。我不知道该漏洞是如何工作的,第二个恶意站点如何“篡改”我的cookie?这让我想到,第二个网站也可以添加一个cookie@aron9foreverth,这是一个非常好的信息来源,而且解释得很好!关于登录密钥,如果我将其直接传递到查询中,是否最好去掉其中的字符?因为如果我读对了,我假设第二个网站可以
改变
cookie?@KyleE4K你是对的。Strip是一个不错的选择。你可以在以下位置阅读更多内容:太疯狂了,错过这么少的东西会导致如此严重的漏洞!谢谢你的帮助!