PHP ±íµ¥ÑéÖ¤

±¾½ÚºÍÏÂÒ»½Ú½²½âÈçºÎʹÓà PHP À´ÑéÖ¤±íµ¥Êý¾Ý¡£

PHP ±íµ¥ÑéÖ¤

Ìáʾ£ºÔÚ´¦Àí PHP ±íµ¥Ê±ÇëÖØÊÓ°²È«ÐÔ£¡

ÕâÐ©Ò³Ãæ½«Õ¹Ê¾ÈçºÎ°²È«µØ´¦Àí PHP ±íµ¥¡£¶Ô HTML ±íµ¥Êý¾Ý½øÐÐÊʵ±µÄÑéÖ¤¶ÔÓÚ·À·¶ºÚ¿ÍºÍÀ¬»øÓʼþºÜÖØÒª£¡

ÎÒÃÇÉÔºóʹÓÃµÄ HTML ±íµ¥°üº¬¶àÖÖÊäÈë×ֶΣº±ØÐèºÍ¿ÉÑ¡µÄÎı¾×ֶΡ¢µ¥Ñ¡°´Å¥ÒÔ¼°Ìá½»°´Å¥£º

ÉÏÃæµÄ±íµ¥Ê¹ÓÃÈçÏÂÑéÖ¤¹æÔò£º

×Ö¶Î ÑéÖ¤¹æÔò
Name ±ØÐè¡£±ØÐë°üº¬×ÖĸºÍ¿Õ¸ñ¡£
E-mail ±ØÐè¡£±ØÐë°üº¬ÓÐЧµÄµç×ÓÓʼþµØÖ·£¨°üº¬ @ ºÍ .£©¡£
Website ¿ÉÑ¡¡£Èç¹ûÑ¡ÌÔò±ØÐë°üº¬ÓÐЧµÄ URL¡£
Comment ¿ÉÑ¡¡£¶àÐÐÊäÈë×ֶΣ¨Îı¾¿ò£©¡£
Gender ±ØÐè¡£±ØÐëÑ¡ÔñÒ»Ïî¡£

Ê×ÏÈÎÒÃÇ¿´Ò»ÏÂÕâ¸ö±íµ¥µÄ´¿ HTML ´úÂ룺

Îı¾×Ö¶Î

name¡¢email ºÍ website ÊôÓÚÎı¾ÊäÈëÔªËØ£¬comment ×Ö¶ÎÊÇÎı¾¿ò¡£HTML ´úÂëÊÇÕâÑùµÄ£º

Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>

µ¥Ñ¡°´Å¥

gender ×Ö¶ÎÊǵ¥Ñ¡°´Å¥£¬HTML ´úÂëÊÇÕâÑùµÄ£º

Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male

±íµ¥ÔªËØ

±íµ¥µÄ HTML ´úÂëÊÇÕâÑùµÄ£º

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

µ±Ìá½»´Ë±íµ¥Ê±£¬Í¨¹ý method="post" ·¢ËÍ±íµ¥Êý¾Ý¡£

ʲôÊÇ $_SERVER["PHP_SELF"] ±äÁ¿£¿

$_SERVER["PHP_SELF"] ÊÇÒ»ÖÖ³¬È«¾Ö±äÁ¿£¬Ëü·µ»Øµ±Ç°Ö´Ðнű¾µÄÎļþÃû¡£

Òò´Ë£¬$_SERVER["PHP_SELF"] ½«±íµ¥Êý¾Ý·¢Ë͵½Ò³Ãæ±¾Éí£¬¶ø²»ÊÇÌø×ªµ½ÁíÒ»ÕÅÒ³Ãæ¡£ÕâÑù£¬Óû§¾ÍÄܹ»ÔÚ±íµ¥Ò³Ãæ»ñµÃ´íÎóÌáʾÐÅÏ¢¡£

ʲôÊÇ htmlspecialchars() º¯Êý£¿

htmlspecialchars() º¯Êý°ÑÌØÊâ×Ö·ûת»»Îª HTML ʵÌå¡£ÕâÒâζ×Å < ºÍ > Ö®ÀàµÄ HTML ×Ö·û»á±»Ì滻Ϊ &lt; ºÍ &gt; ¡£ÕâÑù¿É·ÀÖ¹¹¥»÷Õßͨ¹ýÔÚ±íµ¥ÖÐ×¢Èë HTML »ò JavaScript ´úÂ루¿çÕ¾µã½Å±¾¹¥»÷£©¶Ô´úÂë½øÐÐÀûÓá£

¹ØÓÚ PHP ±íµ¥°²È«ÐÔµÄÖØÒªÌáʾ

$_SERVER["PHP_SELF"] ±äÁ¿Äܹ»±»ºÚ¿ÍÀûÓã¡

Èç¹ûÄúµÄÒ³ÃæÊ¹ÓÃÁË PHP_SELF£¬Óû§Äܹ»ÊäÈëÏ»®ÏßÈ»ºóÖ´ÐпçÕ¾µã½Å±¾£¨XSS£©¡£

Ìáʾ£º¿çÕ¾µã½Å±¾£¨Cross-site scripting£¬XSS£©ÊÇÒ»ÖÖ¼ÆËã»ú°²È«Â©¶´ÀàÐÍ£¬³£¼ûÓÚ Web Ó¦ÓóÌÐò¡£XSS Äܹ»Ê¹¹¥»÷ÕßÏòÆäËûÓû§ä¯ÀÀµÄÍøÒ³ÖÐÊäÈë¿Í»§¶Ë½Å±¾¡£

¼ÙÉèÎÒÃǵÄÒ»ÕÅÃûΪ "test_form.php" µÄÒ³ÃæÖÐÓÐÈçÏÂ±íµ¥£º

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

ÏÖÔÚ£¬Èç¹ûÓû§½øÈëµÄÊǵØÖ·À¸ÖÐÕý³£µÄ URL£º"http://www.example.com/test_form.php"£¬ÉÏÃæµÄ´úÂë»áת»»Îª£º

<form method="post" action="test_form.php">

µ½Ä¿Ç°£¬Ò»ÇÐÕý³£¡£

²»¹ý£¬Èç¹ûÓû§ÔÚµØÖ·À¸ÖмüÈëÁËÈçÏ URL£º

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

ÔÚÕâÖÖÇé¿öÏ£¬ÉÏÃæµÄ´úÂë»áת»»Îª£º

<form method="post" action="test_form.php"/><script>alert('hacked')</script>

Õâ¶Î´úÂë¼ÓÈëÁËÒ»¶Î½Å±¾ºÍÒ»¸öÌáʾÃüÁî¡£²¢ÇÒµ±´ËÒ³Ãæ¼ÓÔØºó£¬¾Í»áÖ´ÐÐ JavaScript ´úÂ루Óû§»á¿´µ½Ò»¸öÌáʾ¿ò£©¡£Õâ½ö½öÊÇÒ»¸ö¹ØÓÚ PHP_SELF ±äÁ¿ÈçºÎ±»ÀûÓõļòµ¥ÎÞº¦°¸Àý¡£

ÄúÓ¦¸ÃÒâʶµ½ <script> ±êÇ©ÄÚÄܹ»Ìí¼ÓÈκΠJavaScript ´úÂ룡ºÚ¿ÍÄܹ»°ÑÓû§Öض¨Ïòµ½Áíһ̨·þÎñÆ÷ÉϵÄij¸öÎļþ£¬¸ÃÎļþÖеĶñÒâ´úÂëÄܹ»¸ü¸ÄÈ«¾Ö±äÁ¿»ò½«±íµ¥Ìá½»µ½ÆäËûµØÖ·ÒÔ±£´æÓû§Êý¾Ý£¬µÈµÈ¡£

Èç¹û±ÜÃâ $_SERVER["PHP_SELF"] ±»ÀûÓã¿

ͨ¹ýʹÓà htmlspecialchars() º¯ÊýÄܹ»±ÜÃâ $_SERVER["PHP_SELF"] ±»ÀûÓá£

±íµ¥´úÂëÊÇÕâÑùµÄ£º

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars() º¯Êý°ÑÌØÊâ×Ö·ûת»»Îª HTML ʵÌå¡£ÏÖÔÚ£¬Èç¹ûÓû§ÊÔͼÀûÓà PHP_SELF ±äÁ¿£¬»áµ¼ÖÂÈçÏÂÊä³ö£º

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

ÎÞ·¨ÀûÓã¬Ã»ÓÐΣº¦£¡

ͨ¹ý PHP ÑéÖ¤±íµ¥Êý¾Ý

ÎÒÃÇÒª×öµÄµÚÒ»¼þÊÂÊÇͨ¹ý PHP µÄ htmlspecialchars() º¯Êý´«µÝËùÓбäÁ¿¡£

ÔÚÎÒÃÇʹÓà htmlspecialchars() º¯Êýºó£¬Èç¹ûÓû§ÊÔͼÔÚÎı¾×Ö¶ÎÖÐÌá½»ÒÔÏÂÄÚÈÝ£º

<script>location.href('http://www.hacked.com')</script>

- ´úÂë²»»áÖ´ÐУ¬ÒòΪ»á±»±£´æÎª×ªÒå´úÂ룬¾ÍÏñÕâÑù£º

&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

ÏÖÔÚÕâÌõ´úÂëÏÔʾÔÚÒ³ÃæÉÏ»ò e-mail ÖÐÊǰ²È«µÄ¡£

ÔÚÓû§Ìá½»¸Ã±íµ¥Ê±£¬ÎÒÃÇ»¹Òª×öÁ½¼þÊ£º

  1. £¨Í¨¹ý PHP trim() º¯Êý£©È¥³ýÓû§ÊäÈëÊý¾ÝÖв»±ØÒªµÄ×Ö·û£¨¶àÓàµÄ¿Õ¸ñ¡¢ÖƱí·û¡¢»»ÐУ©
  2. £¨Í¨¹ý PHP stripslashes() º¯Êý£©É¾³ýÓû§ÊäÈëÊý¾ÝÖеķ´Ð±¸Ü£¨\£©

½ÓÏÂÀ´ÎÒÃÇ´´½¨Ò»¸ö¼ì²éº¯Êý£¨Ïà±ÈÒ»±é±éµØÐ´´úÂ룬ÕâÑùЧÂʸüºÃ£©¡£

ÎÒÃǰѺ¯ÊýÃüÃûΪ test_input()¡£

ÏÖÔÚ£¬ÎÒÃÇÄܹ»Í¨¹ý test_input() º¯Êý¼ì²éÿ¸ö $_POST ±äÁ¿£¬½Å±¾ÊÇÕâÑùµÄ£º

ʵÀý

<?php
// ¶¨Òå±äÁ¿²¢ÉèÖÃΪ¿ÕÖµ
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

ÔËÐÐʵÀý

Çë×¢ÒâÔڽű¾¿ªÍ·£¬ÎÒÃǼì²éÁË±íµ¥ÊÇ·ñʹÓà $_SERVER["REQUEST_METHOD"] ½øÐÐÌá½»¡£Èç¹û REQUEST_METHOD ÊÇ POST£¬ÄÇô±íµ¥Òѱ»Ìá½» - ²¢ÇÒÓ¦¸Ã¶ÔÆä½øÐÐÑéÖ¤¡£Èç¹ûδÌá½»£¬ÔòÌø¹ýÑéÖ¤²¢ÏÔʾһ¸ö¿Õ°×±íµ¥¡£

²»¹ý£¬ÔÚÉÏÃæµÄÀý×ÓÖУ¬ËùÓÐÊäÈë×ֶζ¼ÊÇ¿ÉÑ¡µÄ¡£¼´Ê¹Óû§Î´ÊäÈëÈκÎÊý¾Ý£¬½Å±¾Ò²ÄÜÕý³£¹¤×÷¡£

ÏÂÒ»²½ÊÇÖÆ×÷±ØÌîÊäÈë×ֶΣ¬²¢´´½¨ÐèҪʱʹÓõĴíÎóÏûÏ¢¡£

VUE