Cookie安全php
我对登录表单的“记住我”部分使用基本的cookie系统。代码如下:Cookie安全php,php,security,cookies,Php,Security,Cookies,我对登录表单的“记住我”部分使用基本的cookie系统。代码如下: if(isset($_POST['submit'])) { $username = $_POST['username']; $password = $_POST['password']; if($username&&$password) { $connect = mysql_connect('localhost','root',''); mysql_sel
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,您也需要有一个过程来识别用户,即他们是真正的客户。例如,当用户登录时,您可以保存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\u real\u escape\u string
过滤任何恶意代码现在任何人都可以创建cookie,以任何用户的身份登录,只要他知道自己的用户名。除此之外,在数据库中存储明文密码是一个巨大的难题!嗯,这一点都不好=/我仍然没有在代码中添加所有的crypt部分。所有内容仍在本地服务器中,因此没有问题。如果您现在不添加它,很可能会忘记或懒得在以后添加它,您的代码也会受到攻击。对于此代码,只有microtime(true)
部分实际上是哈希输入,因为您使用算术加法。这无关紧要。使用算术加法,'A234W'
会产生0
。我刚才给出了一个例子。他可以使用任何随机字符串生成器。:)-1,你应该使用会话启动,而不是自己滚动。@Rook我想cookie可能很有用,只要你安全地使用它