Cookie安全php

时间:2012-07-30 07:36:02

标签: php security cookies

我正在使用基本的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中的明文上。

1 个答案:

答案 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来过滤任何恶意代码