2011-08-18 2 views
3

필자는 오래 전에 PHP 개발자가 작성한 사이트를 조사하고 있으며 그가 사용하는 로그인 기술이 안전한지 여부를 알고 싶습니다.SQL 삽입을 고려할 때이 PHP 로그인 기술이 안전한가요?

$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 

이 안전 :

여기에 그가 그것을했던 방법은?

+4

코드 검토는 여기에 속하지 않습니다. http://codereview.stackexchange.com/ –

+0

다음 내용을 검토하는 것이 좋습니다. http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – philwinkle

답변

9

제대로 표시되면 사용자 이름에 대한 유일한 확인은 escapeshellcmd입니다. 충분하지 않습니다. 다시 말하지만, 올바르게 표시되면

$sql_ell='SELECT PWD FROM USERS WHERE ACTIVE=1 AND USERNAME="'.$u.'" AND DOMAIN="'.$d.'"' 

모든 종류의 불편한 점을 해결할 수 있습니다.

아니요. 안전하지 않아.

관련 문제