考虑到SQL注入,这种PHP登录技术安全吗?
我正在调查一个很久以前由某个PHP开发人员编写的网站,我想知道他使用的登录技术是否安全 他是这样做的:考虑到SQL注入,这种PHP登录技术安全吗?,php,mysql,sql-injection,Php,Mysql,Sql Injection,我正在调查一个很久以前由某个PHP开发人员编写的网站,我想知道他使用的登录技术是否安全 他是这样做的: $username=''; $username = escapeshellcmd($HTTP_POST_VARS['user']); $pwd = escapeshellcmd($HTTP_POST_VARS['pw']); $loginerror=false; if ($logout=="1") { closesession($s_id); $username=''; $lo
$username='';
$username = escapeshellcmd($HTTP_POST_VARS['user']);
$pwd = escapeshellcmd($HTTP_POST_VARS['pw']);
$loginerror=false;
if ($logout=="1")
{
closesession($s_id);
$username='';
$logged=false;
}
$logged=checksession(session_id(), $ipaddr);
if ((!$logged) && ($username!=''))
{
//$username = escapeshellcmd($HTTP_POST_VARS['felhasznalo']);
//$pwd = escapeshellcmd($HTTP_POST_VARS['jelszo']);
if (checkuser($username, $pwd, DOM))
{
if (sessionstore(session_id(), $username, $pwd, $ipaddr, $datum, DOM))
{
$logged=true;
}
}
else
{
$loginerror=true;
;
}
}
if ($logged)
{
$username=getsessionuser(session_id());
$remember=getremember($username, DOM);
}
?>
function checkuser($u, $p, $d )
{
$sql_ell='SELECT PWD FROM USERS WHERE ACTIVE=1 AND USERNAME="'.$u.'" AND DOMAIN="'.$d.'"';
$eredm_ell= mysql_query($sql_ell);
if ($eredm_ell)
{
$domainnumrows=mysql_num_rows($eredm_ell);
if ($domainnumrows==1)
{
$egy_sor = mysql_fetch_row( $eredm_ell );
$pwd_in_table=$egy_sor[0];
if ($pwd_in_table==md5($u.$p))
{
return true;
}
} // rows
} // ered
return false;
} // func
这安全吗?如果我看得没错,对用户名的唯一检查是
escapeshellcmd
。这还不够。同样,如果我看得正确,它会被放入这个查询中:
$sql_ell='SELECT PWD FROM USERS WHERE ACTIVE=1 AND USERNAME="'.$u.'" AND DOMAIN="'.$d.'"'
在那里你可以做各种各样的丑事
所以不。这不安全。代码审查不属于这里。我强烈建议审查以下内容: