ホームページ >バックエンド開発 >PHPチュートリアル >Cookieを使用してユーザーがログインしているかどうか、安全かどうかを確認します

Cookieを使用してユーザーがログインしているかどうか、安全かどうかを確認します

WBOY
WBOYオリジナル
2016-06-13 12:57:08893ブラウズ

ユーザーがログインしているかどうかを確認するために Cookie を使用しても安全ですか?
ユーザーがログインしているかどうかを確認するために Cookie を使用するのは安全ですか?

$cookies =  $_COOKIE["wordpress_logged_in_".md5("http://localhost/wp")];<br />
$userinfo = explode('|',$cookies);<br />
$db = mysql_connect("localhost","root","root");<br />
mysql_select_db("wp",$db);<br />
mysql_query("SET NAMES utf8");<br />
$result = @mysql_query("SELECT user_login FROM wp_users where user_login ='".mysql_real_escape_string($userinfo[0])."' limit 1");<br />
$total = mysql_num_rows($result);<br />
mysql_close($db);<br />
if($total>0){<br />
    echo 'hello: '.$userinfo[0]);<br />
}else{<br />
    echo '<a href="http://localhost/wp/login.php"'>Login</a>';//如果没有登录,一个登录超链。<br />
}


-----解決策--------------------------------
安全かどうかはあなた次第です あなたが書くコードは Cookie とは何の関係もありません。重要なのは Cookie をどのように適用するかです
-----解決策------- -------------
引用:
安全かどうかは書くコード次第で何も関係ありませんCookie の場合、重要なのは Cookie の使い方です

+1
クッキーにパスワードを書き込んでおけば何も聞く必要はありません
-----解決方法---------
Cookie が変更 (なりすまし) されているかどうかを確認するには、検証 Cookie を追加することをお勧めします。
簡単な手順は次のとおりです:
1. ユーザー ID またはユーザー名を Cookie に書き込み、A
という名前を付けます 2. 次のメソッドを使用してユーザー ID またはユーザー名を暗号化し、B
という名前の Cookie に書き込みます。 3. ログインを判定する必要がある場合は、B を復号し、A と同じかどうかを判定します

共有コード:
<br>
/**<br>
* セキュリティコード<br>
* @param string $string 処理するテキスト <br>
* @param string $operation 処理メソッド (DECODE: デコード、ENCODE: エンコード) <br>
* @param string $key key<br>
* @param int $expiry 有効期限<br>
* @戻り文字列<br>
​*/<br>
function oauthCode($string, $operation = 'DECODE', $key = '', $expiry = 0)<br>
{<br>
$ckey_length = 4;<br>
$key = md5($key != '' ? $key : '31415926');//デフォルトキー<br>
$keya = md5(substr($key, 0, 16));<br>
$keyb = md5(substr($key, 16, 16));<br>
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';<br>
$cryptkey = $keya.md5($keya.$keyc);<br>
$key_length = strlen($cryptkey);<br>
$string = $operation == 'DECODE' ?base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string. $keyb), 0, 16).$string;<br>
$string_length = strlen($string);<br>
$result = '';<br>
$box = range(0, 255);<br>
$rndkey = array();<br>
for($i = 0; $i 
{<br>
$rndkey[$i] = ord($cryptkey[$i % $key_length]);<br>
}<br>
for($j = $i = 0; $i 
{<br>
$j = ($j + $box[$i] + $rndkey[$i]) % 256;<br>
$tmp = $box[$i];<br>
$box[$i] = $box[$j];<br>
$box[$j] = $tmp;<br>
}<br>
for($a = $j = $i = 0; $i 
{<br>
$a = ($a + 1) % 256;<br>
$j = ($j + $box[$a]) % 256;<br>
$tmp = $box[$a];<br>
$box[$a] = $box[$j];<br>
$box[$j] = $tmp;<br>
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。