0

ログインフォームの「rememberme」部分に基本的な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のクリアに機密情報を入れたりすることを許可しないことです。

4

1 に答える 1

1

現在、ユーザーのユーザー名を知っていれば、誰でも自分自身をログに記録できます。Cookieが設定されている場合でも、ユーザーが本物のクライアントであることを識別するプロセスが必要です。たとえば、ユーザーがログインすると、CookieとDBに保存されているランダムな英数字の文字列をそのユーザーに対して保存できます。次回、文字列とDBの値を照合し、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);  

mysql_real_escape_string悪意のあるコードをフィルタリングするためにCookieを使用して読み取る場合

于 2012-07-30T08:46:35.027 に答える