rva*_*oni 88 php session session-fixation
为什么以及何时应该session_regenerate_id()在php中使用该功能?我使用后应该经常使用session_start()吗?我已经读过我必须使用它来防止会话固定,这是唯一的原因吗?
Ama*_*ali 87
session_regenerate_id()?正如函数名所示,它是一个用新的会话ID替换当前会话ID的函数,并保留当前的会话信息.
它主要有助于防止会话固定攻击.会话固定攻击是恶意用户尝试利用系统中的漏洞来修复(设置)其他用户的会话ID(SID)的地方.通过这样做,他们将获得原始用户的完全访问权限,并能够执行原本需要身份验证的任务.
要防止此类攻击,请在用户session_regenerate_id()成功登录时(或每次X请求时)为其分配新的会话ID .现在只有他有会话ID,而您的旧(固定)会话ID不再有效.
session_regenerate_id()?正如symbecean在下面的注释中指出的那样,必须在身份验证状态的任何转换时更改会话ID,并且仅在身份验证转换时更改.
进一步阅读:
Dim*_*rab 21
您应该使用session_regenerate_id()以停止会话劫持 和会话固定.
会话劫持是指窃取会话cookie.与其他计算机共享本地网络时,这可以很容易地实现.比如星巴克.示例...会话Y的用户正在星巴克浏览James的网站.我在听他们的网络流量,喝着我的拿铁咖啡.我为詹姆斯的网站带来了会话Y的cookie,并设置我的浏览器使用它们.现在,当我访问James的网站时,詹姆斯的网站.
从这个网页:
会话固定是一种攻击技术,可强制用户的会话ID为显式值.根据目标网站的功能,可以使用许多技术来"修复"会话ID值.这些技术的范围从跨站点脚本攻击到使用先前发出的HTTP请求来加密网站.修复用户的会话ID后,攻击者将等待该用户登录.一旦用户这样做,攻击者就使用预定义的会话ID值来假设相同的在线身份.
何时使用
当用户编辑/更新某些重要输入(更改密码,凭据,忘记密码等)时,可能会危及网站安全或隐私政策.
也可以看看:
Mac*_*ity 18
我认为会话中毒问题已经得到很好的解决.
要回答"我什么时候应该使用它?" 部分,重要的是退后一步,考虑你的应用程序在会话中做了什么.或者,换句话说,这是您需要回答的关键安全问题
如果有人举行了这次会议,他们会获得什么?
如果您所做的只是跟踪匿名数据(用户访问网站并使用它来跟踪他们的访问),则没有理由重新生成会话.通过抓住那个会话,劫机者不会获得任何有价值的东西.
但是,很多网站都提供登录.登录会改变很多东西.我可以访问我的个人资料.我可以改变设置.因此,劫持者可能希望我的帐户访问,特别是如果普通用户和管理员用户都使用会话来管理登录.因此,当人们访问我的网站并登录时,我会重新生成会话.它增加了一个额外的安全层,我新登录的用户不太可能被劫持.
每当我们向会话添加关键数据时,您都应该考虑重新生成会话ID.如果您需要强化您的应用程序以防止固定,那么随机再生可能是有用的,但我永远不会在每个请求上重新生成.默认情况下,PHP将会话存储在本地磁盘上的文件中.您正在添加大量磁盘I/O以缓解相对较小的攻击媒介.如果你真的需要更多的安全性,我会提倡在定期重新生成完全HTTPS(HTTPS使得固定非常难以实现).
kel*_*nik 14
session_regenerate_id?您应该使用它来防止会话固定.
session_regenerate_id?每当身份验证状态发生变化时,主要是登录和注销.
Bob坐在一台公共计算机上,通过浏览stackoverflow.com,他在那里开了一个新的会话.会话ID保存在cookie中(带有httpOnly标志以防止通过javascript访问).让我们假设Stack Overflow始终启用HTTPS,并secure为Cookie设置标志.
我们现在怎么能偷走会议?
Bob写下会话ID.他离开电脑而没有关闭浏览器.现在,Alice来到这台计算机,看到已经加载了Stack Overflow.她现在登录.
现在我们正处于你应该使用的阶段session_regenerate_id.如果您在登录期间未在此处创建新的会话ID,则Bob可以使用他之前写下的会话来访问Alice的会话,并且现在将以Alice身份登录.
Has*_*lan 12
您可以使用它来提高安全性.
通过这种方式,您可以创建一次性使用的会话ID.
假设您的用户会话ID为= 3
一些黑客入侵了你的客户端并得到了他们的session_id.所以黑客可以使用该cookie来使用他们的会话.
如果你有像这样的代码
session_start();
session_regenerate_id();
Run Code Online (Sandbox Code Playgroud)
您可以在每次使用您的网站时更改其会话.
现在黑客得到sessionid = 3
但是你在使用之后改变了会话,所以你的
用户有sessionid = 4 // auth
黑客有session = 3 // null
但有一点可以说你正在使用重新生成方法,而你的客户只是登录网站并关闭浏览器或不活动.您的客户端有sessionid = 4,如果黑客在该部分获取cookie,他们将拥有相同的sessionid.
如上所述,通过这种方式,您可以保护您的客户端免受一种方式的数据嗅探,但仍然不能解决这个问题.
但如果你使用SSL enc,它将是非常安全的.
抱歉英文不好.
Pet*_*ter 10
一个简单的用例:
// User visits a webshop
$shopcart = new Cart();
Run Code Online (Sandbox Code Playgroud)
启动会话并在数据库中创建条目.用户的购物车由他的会话ID标识.
// User orders items
$shopcart->add('123', 20);
$shopcart->add('124', 18);
$shopcart->add('127', 5);
Run Code Online (Sandbox Code Playgroud)
对于添加的每个产品,我的shopcart表中都会记录一条记录.也由会话ID标识.
// User saves cart in order to use it later
$shopcart->save();
Run Code Online (Sandbox Code Playgroud)
用户决定保存他的购物车.它现在被附加到他的用户ID.
// Regenerate session id for user to be able to make a new cart
session_regenerate_id();
Run Code Online (Sandbox Code Playgroud)
重新生成sesssion id,用户现在可以开始创建另一个shopcart.
小智 6
session_regenerate_id(): 无法重新生成会话 ID - 会话未激活
if(session_status() == PHP_SESSION_ACTIVE)
{
session_regenerate_id();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47697 次 |
| 最近记录: |