ÍøÂçѧԺ w3popÉçÇø ÍøÂç×ÊÔ´ ITÐÂÎÅ

w3pop.com :: ÍøÂçѧԺ :: PHP :: PHP ·ÀÖ¹ SQL ×¢Èë¹¥»÷

»áÔ±µÇ½

ÕʺÅ

ÃÜÂë

»Ø´ð

¼ÇסÃÜÂë

Íü¼ÇÃÜÂë? ×¢²á

PHP
WINDOWSϰ²×°MyS..
PHP ÖÆ×÷ ÍøÕ¾/·þ..
ÓÃPHPºÍCSSÖÆ×÷»î..
PHP µ¥¼þģʽ
PHP MVCģʽ£¬Àà·..
PHP ÖÐʹÓÃÕýÔò±í..
PHP ·ÀÖ¹ SQL ×¢È..
PHP ¿çÕ¾µã½Å±¾¹¥..
PHP ·ÀÖ¹Óû§²Ù×Ý..
PHP ·ÀÖ¹Ô¶³Ì±íµ¥..

PHP ·ÀÖ¹ SQL ×¢Èë¹¥»÷


×÷Õß:ibm.com ·­Òë/ÕûÀí:w3pop.com ·¢²¼:2007-10-11 ä¯ÀÀ:2765 :: ::

·ÀÖ¹ SQL ×¢Èë¹¥»÷

ÔÚ SQL ×¢Èë¹¥»÷ ÖУ¬Óû§Í¨¹ý²Ù×Ý±íµ¥»ò GET ²éѯ×Ö·û´®£¬½«ÐÅÏ¢Ìí¼Óµ½Êý¾Ý¿â²éѯÖС£ÀýÈ磬¼ÙÉèÓÐÒ»¸ö¼òµ¥µÄµÇ¼Êý¾Ý¿â¡£Õâ¸öÊý¾Ý¿âÖеÄÿ¸ö¼Ç¼¶¼ÓÐÒ»¸öÓû§Ãû×ֶκÍÒ»¸öÃÜÂë×ֶΡ£¹¹½¨Ò»¸öµÇ¼±íµ¥£¬ÈÃÓû§Äܹ»µÇ¼¡£


Çåµ¥ 5. ¼òµ¥µÄµÇ¼±íµ¥


<html>
<head>
<title>Login</title>
</head>
<body>
<form action="verify.php" method="post">
<p><label for='user'>Username</label>
<input type='text' name='user' id='user'/>
</p>
<p><label for='pw'>Password</label>
<input type='password' name='pw' id='pw'/>
</p>
<p><input type='submit' value='login'/></p>
</form>
</body>
</html>

 

Õâ¸ö±íµ¥½ÓÊÜÓû§ÊäÈëµÄÓû§ÃûºÍÃÜÂ룬²¢½«Óû§ÊäÈëÌá½»¸øÃûΪ verify.php µÄÎļþ¡£ÔÚÕâ¸öÎļþÖУ¬PHP ´¦ÀíÀ´×ԵǼ±íµ¥µÄÊý¾Ý£¬ÈçÏÂËùʾ£º


Çåµ¥ 6. ²»°²È«µÄ PHP ±íµ¥´¦Àí´úÂë


<?php
$okay = 0;
$username = $_POST['user'];
$pw = $_POST['pw'];

$sql = "select count(*) as ctr from users where
username='".$username."' and password='". $pw."' limit 1";

$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){
if ($data->ctr == 1){
//they're okay to enter the application!
$okay = 1;
}
}

if ($okay){
$_SESSION['loginokay'] = true;
header("index.php");
}else{
header("login.php");
}
?>

 

Õâ¶Î´úÂë¿´ÆðÀ´Ã»ÎÊÌ⣬¶ÔÂð£¿ÊÀ ½ç¸÷µØ³É°Ù£¨ÉõÖÁ³Éǧ£©µÄ PHP/MySQL Õ¾µã¶¼ÔÚʹÓÃÕâÑùµÄ´úÂë¡£Ëü´íÔÚÄÄÀºÃ£¬¼Çס “²»ÄÜÐÅÈÎÓû§ÊäÈ딡£ÕâÀïûÓжÔÀ´×ÔÓû§µÄÈκÎÐÅÏ¢½øÐÐתÒ壬Òò´ËʹӦÓóÌÐòÈÝÒ×Êܵ½¹¥»÷¡£¾ßÌåÀ´Ëµ£¬¿ÉÄÜ»á³öÏÖÈκÎÀàÐ굀 SQL ×¢Èë¹¥»÷¡£

ÀýÈ磬Èç¹ûÓû§ÊäÈë foo ×÷ΪÓû§Ãû£¬ÊäÈë ' or '1'='1 ×÷ΪÃÜÂ룬ÄÇôʵ¼ÊÉϻὫÒÔÏÂ×Ö·û´®´«µÝ¸ø PHP£¬È»ºó½«²éѯ´«µÝ¸ø MySQL£º

$sql = "select count(*) as ctr  from users where 
username='foo' and password='' or '1'='1' limit 1";

 

Õâ¸ö²éѯ×ÜÊÇ·µ»Ø¼ÆÊýÖµ 1£¬Òò´Ë PHP »áÔÊÐí½øÐзÃÎÊ¡£Í¨¹ýÔÚÃÜÂë×Ö·û´®µÄĩβעÈëijЩ¶ñÒâ SQL£¬ºÚ¿Í¾ÍÄÜ×°°ç³ÉºÏ·¨µÄÓû§¡£

½â¾öÕâ¸öÎÊÌâµÄ°ì·¨ÊÇ£¬½« PHP µÄÄÚÖà mysql_real_escape_string() º¯ÊýÓÃ×÷ÈκÎÓû§ÊäÈëµÄ°ü×°Æ÷¡£Õâ¸öº¯Êý¶Ô×Ö·û´®ÖеÄ×Ö·û½øÐÐתÒ壬ʹ×Ö·û´®²»¿ÉÄÜ´«µÝƲºÅµÈÌØÊâ×Ö·û²¢Èà MySQL ¸ù¾ÝÌØÊâ×Ö·û½øÐвÙ×÷¡£Çåµ¥ 7 չʾÁË´ø×ªÒå´¦ÀíµÄ´úÂë¡£


Çåµ¥ 7. °²È«µÄ PHP ±íµ¥´¦Àí´úÂë


<?php
$okay = 0;
$username = $_POST['user'];
$pw = $_POST['pw'];

$sql = "select count(*) as ctr from users where
username='".mysql_real_escape_string($username)."'
and password='". mysql_real_escape_string($pw)."' limit 1";

$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){
if ($data->ctr == 1){
//they're okay to enter the application!
$okay = 1;
}
}

if ($okay){
$_SESSION['loginokay'] = true;
header("index.php");
}else{
header("login.php");
}
?>

 

ʹÓà mysql_real_escape_string() ×÷ΪÓû§ÊäÈëµÄ°ü×°Æ÷£¬¾Í¿ÉÒÔ±ÜÃâÓû§ÊäÈëÖеÄÈκζñÒâ SQL ×¢Èë¡£Èç¹ûÓû§³¢ÊÔͨ¹ý SQL ×¢Èë´«µÝ»ûÐεÄÃÜÂ룬ÄÇô»á½«ÒÔϲéѯ´«µÝ¸øÊý¾Ý¿â£º

select count(*) as ctr from users where \
username='foo' and password='\' or \'1\'=\'1' limit 1"

 

Êý¾Ý¿âÖÐûÓÐÈκζ«Î÷ÓëÕâÑùµÄÃÜÂëÆ¥Åä¡£½ö½ö²ÉÓÃÒ»¸ö¼òµ¥µÄ²½Ö裬¾Í¶ÂסÁË Web Ó¦ÓóÌÐòÖеÄÒ»¸ö´ó©¶´¡£ÕâÀïµÃ³öµÄ¾­ÑéÊÇ£¬×ÜÊÇÓ¦¸Ã¶Ô SQL ²éѯµÄÓû§ÊäÈë½øÐÐתÒå¡£

ÆÀÂÛ (0) All