关于cookie和会话的PHP安全性,这是我迄今为止为防止攻击所做的。 我做了什么错误/不安全的事情?
登录.php
if ($username==$dbusername&&$hashed_password==$dbpassword){
setcookie('username[0]',$username,time()+(60*60*24*365));
setcookie('username[1]',$userid,time()+(60*60*24*365));
setcookie('password',$hashed_password,time()+(60*60*24*365));
if($admin=='1') {
setcookie('username[3]',$admin,time()+(60*60*24*365));
}
$_SESSION['logged-in']=1;
注销.php
$time = time()-(60*60*24*365);
setcookie('username[0]', '',$time);
setcookie('username[1]', '',$time);
setcookie('username[2]', '',$time);
setcookie('username[3]', '',$time);
setcookie('password', '',$time);
unset($_COOKIE['username']);
unset($_SESSION['logged-in']);
我在每个页面上调用session_regenerate_id(),停止会话固定/劫持是否正确?
<?php session_start(); session_regenerate_id();
这是我的PHP.ini我还能通过哪些其他方式为会话和cookie提供安全性
session.use_trans_sid = 0
session.user_only_cookies = 1
欢迎任何示例/改进,因为我通过示例学习得更好。
通常在更改访问权限(例如登录后)时重新生成会话 ID。
密码不应存储在客户端的cookie中,甚至哈希也不应存储。甚至没有必要将其存储在会话中,您仅使用它来验证登录,并且在将状态写入会话后,您应该忘记密码。
如果你想要一个真正安全的网站,你需要一个带有SSL加密的HTTPS连接。否则,攻击者可以窃听发送的明文信息,并使用会话 ID(或用于对用户进行身份验证的任何内容)来模拟用户。
请真的请不要将密码存储为 cookie。它(计算机)可能在咖啡馆或其他地方。
这是一个安全问题,一个可以破解的问题。
顺便说一句,重新思考并使用狡猾的头脑来思考一个人如何闯入您的系统。