我知道这个话题已经讨论了很多,但我还有一些具体的问题仍未得到解答.例如:
// **PREVENTING SESSION HIJACKING**
// Prevents javascript XSS attacks aimed to steal the session ID
ini_set('session.cookie_httponly', 1);
// Adds entropy into the randomization of the session ID, as PHP's random number
// generator has some known flaws
ini_set('session.entropy_file', '/dev/urandom');
// Uses a strong hash
ini_set('session.hash_function', 'whirlpool');
Run Code Online (Sandbox Code Playgroud)
// **PREVENTING SESSION FIXATION**
// Session ID cannot be passed through URLs
ini_set('session.use_only_cookies', 1);
// Uses a secure connection (HTTPS) if possible
ini_set('session.cookie_secure', 1);
Run Code Online (Sandbox Code Playgroud)
session_start();
// If the user is already …Run Code Online (Sandbox Code Playgroud) 大多数Web应用程序使用cookie来管理用户的会话,并允许您保持登录状态,即使浏览器已关闭.
让我们假装我们在书中做了所有事情,以确保cookie本身是保存.
是否有可能阻止对机器具有物理访问权限的人复制cookie并在另一台机器上重复使用,从而窃取会话?
让我们考虑一下服务器对用户的信任.
会话固定:为了避免固定我session_regenerate_id()只在身份验证中使用(login.php)
会话sidejacking:整个站点的SSL加密.
我安全吗?
我最近一直在阅读关于会话修复/劫持的内容,并理解这个理论.
我不明白的是如何在实践中利用它.您是否必须篡改浏览器才能使用被盗的Cookie?将其附加到URL并将其传递给Web应用程序?
或者你会编写某种自定义脚本来使用它,如果是这样,它会做什么?
我不是试图向这个或者例子寻求帮助,但我正在努力学习更多并理解.任何帮助表示赞赏.
我最近在错误日志中看到了这个(每天1个,我每天有4万个访问者):
[22-Sep-2009 21:13:52] PHP Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /var/my_files/class.session.php on line 67
[22-Sep-2009 21:13:52] PHP Warning: Unknown: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in Unknown on line 0
[22-Sep-2009 21:13:52] PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
这不是配置问题,因为它适用于所有人.
我已经修改了php.ini来实现这个目的:
session.use_only_cookies …Run Code Online (Sandbox Code Playgroud) 当我读到有关会话劫持文章时,我了解到加密存储在cookie中的会话ID值会很好.
据我所知,当我通过调用启动会话时session_start(),PHP不会加密cookie中的会话ID值.
如何加密会话ID值然后用它初始化会话?
我想知道当前版本的ASP.NET中内置了什么会话ID劫持保护.
我最近看到这篇内容非常丰富的文章,解释了如何通过实现将IP地址和用户代理标头编码到会话ID中的附加层来增强会话安全性.然后在每个后续请求中验证这些详细信息.
看来这篇文章是为ASP.NET 1.1编写的,所以我想知道现在是否在ASP.NET中构建了类似的东西.实现这样的附加层仍然有什么好处吗?
谢谢.
我正在寻找一个简单的英语,"for dummies"解释JSESSIONID如何从安全方面工作
我注意到stackoverflow只在登录页面上使用SSL,并且可以通过HTTP发布问题/答案.
用户必须登录才能这样做,所以我想知道如果没有使用SSL,stackoverflow如何设法跟踪登录的用户.
目前我正在制作一个rails应用程序,它使用cookie跟踪登录状态.我一直认为你需要SSL来安全地做到这一点.但我是通过HTTP发布的,作为登录用户.
当我运行tcpdump -i eth0 -A然后访问stackoverflow时,我注意到一个名为'usr'的cookie ,并且该cookie以明文传输,没有SSL.如果我通过不安全的连接登录,如无线网吧,黑客/数据包嗅探器可以带我的usr cookie,并重播我的会话吗?
我想避免在我的rails应用程序中使用SSL(因为我的主机充电臂和腿来实现它),所以我想使用与stackoverflow相同的技术.我希望让用户无需SSL即可登录.
我猜这里正在使用数据库(或memcache/redis)会话存储.但是肯定还需要某种cookie吗?为什么这些cookie不必通过SSL发送?是否有其他事情在后台进行,使这些cookie对不同机器上的黑客造成多余影响?
我的网站遭到暴力攻击,攻击者试图访问用户帐户.机器人没有用户代理.我有一个系统阻止一个人在10分钟内超过每个帐户3次尝试登录.
我还检查了用户代理,如果没有,退出.
我的问题是:会话只存储在浏览器中吗?我在想的是他们正在使用通过命令行执行的脚本.
我也实现了这个:
if(!isset($_COOKIE[ini_get('session.name')])) {
header("HTTP/1.0 404 Not Found");
exit;
}
Run Code Online (Sandbox Code Playgroud)
我还能做些什么来阻止这些攻击吗?