我正在编写PHP
网络应用程序的登录和身份验证系统,并寻找防止会话劫持的最佳做法。登录页面集的会话:
$_SESSION['email_address'] = $_POST['email_address'];
$_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR'];
然后在每个页面和操作中我检查以确保会话存在,并且会话中存储的IP地址与$ _SERVER ['REMOTE_ADDR']中的IP地址匹配。
if(isset($_SESSION['email_address']) && isset($_SESSION['ip_address']) && $_SESSION['ip_address'] == $_SERVER['REMOTE_ADDR']) {
//valid auth
}
在线阅读,有人说只是检查IP地址不够好。还需要什么?此外,还有关于使用session_regenerate_id()
的讨论。这是如何影响我的代码的?我是否在每个页面上拨打session_regenerate_id()
?
感谢。
答案 0 :(得分:0)
如果您正在编写自己的登录系统,我希望您对所有安全问题都非常精通,并且不要依赖本网站上的人提供给您的问题。 $ _SESSION在任何共享服务器上自动存在安全风险。 $ _SESSION可用于系统上运行的所有php进程。如果您的任何客户最终在共享服务器上运行您的软件,您将不得不为此做好计划。
它也极易编码错误,从而产生安全漏洞。你最好使用Yii或一些已经提供强大的身份验证措施的框架。例如,Yii,如果您希望能够将其归结为只是为您提供一些登录和安全插件,那么就像您可以获得的那样基本。