我正在使用基本的cookie系统来记录登录表单中的“记住我”部分。这是代码:
if(isset($_POST['submit']))
{
$username = $_POST['username'];
$password = $_POST['password'];
if($username&&$password)
{
$connect = mysql_connect('localhost','root','');
mysql_select_db('phplogin');
$query = mysql_query("SELECT * FROM utilisateurs WHERE NomUtilisateur='$username' AND MotDePasse='$password'");
$rows = mysql_num_rows($query);
if($rows==1)
{
if($_POST['checkbox'])
{
setcookie('username',$username,time()+3600);
header('Location: membre.php');
}else{$_SESSION['username']=$username;header('Location:membre.php');}
}else echo "Something something error";
}else echo "Something something darkside";
}
我不确定是否需要保护cookie,如果是,那该怎么做?我真正想做的就是不允许人们使用假cookie登录其他用户帐户,或者将敏感信息放在cookie中的明文上。
答案 0 :(得分:1)
目前,如果他知道用户的用户名,任何人都可以自己登录。即使设置了cookie,您也需要有一个过程来识别用户他们是真正的客户端。例如,当用户登录时,您可以保存cookie中保存的随机字母数字字符串,并保存您的数据库中的用户,并且下次您使用数据库中的值交叉检查字符串并记住每隔X天更改一个字母数字字符串,这可以防止攻击者复制某人的cookie并使用它们进行登录。这样的事情
$uniquekey = 'A234W';
$randomstring = sha1(strval(rand(0,microtime(true))+ $uniquekey + strval(microtime(true))));
setcookie( 'loginID', $randomstring, time()+60*60*24*7,'/', 'www.yoursite.com', false, true);
从cookie读取时使用mysql_real_escape_string
来过滤任何恶意代码