3

Web サイトの管理パネルを構築していて、認証コードが書かれていますが、それがどれほど安全かはわかりません。

これはログイン スクリプトではありませんが、ログイン スクリプトによって設定されたいくつかのセッション変数を利用します。

とにかく、ここにあります。チェックしていただければ幸いです(:

if (isset($_SESSION['logged_in'])) {    
//Prevent hijacking of the session
    $recreatesignature = $_SESSION['signature']; //signature (old)
    $recreatessalt = $_SESSION['salt']; //session salt (old)
    $useragent = $_SERVER['HTTP_USER_AGENT']; //useragent (new)
    $ip = $_SERVER['REMOTE_ADDR']; //ip (new)

    $signature = $salt.sha1($ip.$recreatessalt.$useragent); //signature (hash)

    //Compare signatures
    if (!($recreatesignature==$signature)) {
        header(sprintf("Location: %s", $domain));   
        exit();
    }

//Session timeout
    if ((isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] >     $sessiontimeout)))  {
        //destroy session
        session_destroy();   
        session_unset();  
        //redirect to home page
        header(sprintf("Location: %s", $domain));
    }
    $_SESSION['LAST_ACTIVITY'] = time(); 

//Generate new session id to make hijacking harder
    session_regenerate_id(TRUE);
}
4

2 に答える 2

0

かなり良さそうです。しかし、ユーザー エージェントと IP は簡単に偽装できるため、署名に関してはすべてソルトに任されています。その場合は、かなり大きな塩をお勧めします。また、他の人が指摘しているように、HTTPS を使用する必要があります。次に、使用する証明書が侵害されていないことを確認する必要があります (明らかに簡単すぎるため)。

于 2013-01-15T13:45:03.740 に答える
0

完璧に見えますが、完全な「安全」のためにパケット スニッフィングを防ぐには https が必要です。

Adder の IP の最初の 2 つのサブネットに関するアイデアについては、データが非常に機密性の高いものである場合、さらに検証するために基本的な geo2ip を実行することを検討できます。

于 2013-01-15T12:30:39.077 に答える