Cookie 和会话的 PHP 安全性



关于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。它(计算机)可能在咖啡馆或其他地方。

这是一个安全问题,一个可以破解的问题。

顺便说一句,重新思考并使用狡猾的头脑来思考一个人如何闯入您的系统。

最新更新