標籤:style blog http color 使用 strong
方法一:原理和防盜鏈一樣,都是檢查資訊來源的http 頭.如果不是本站網域名稱就阻止.(當然,這不是絕對的,因為referer是可以偽造的)。
<?$servername=$HTTP_SERVER_VARS[‘SERVER_NAME‘]; //擷取本站網域名稱$sub_from=$HTTP_SERVER_VARS["HTTP_REFERER"]; //擷取來源的referer$sub_len=strlen($servername); //計算本站網域名稱的長度$checkfrom=substr($sub_from,7,$sub_len); //截取來源網域名稱if($checkfrom!=$servername){ //假如截取的來源網域名稱不等於本站網域名稱,則終止. echo("資料來源有誤!請從本站提交!"); exit;}?>
處理遠端資料表單提交更好的方式是,根據一個惟一的字串或時間戳記產生一個令牌,並將這個令牌放在會話變數和表單中。提交表單之後,檢查兩個令牌是否匹配。如果不匹配,就知道有人試圖從表單的遠程副本發送資料。
要建立隨機的令牌,可以使用 PHP 內建的 md5()、uniqid() 和 rand() 函數,如下所示
<?phpsession_start(); if ($_POST[‘submit‘] == "go"){ //check token if ($_POST[‘token‘] == $_SESSION[‘token‘]){ //strip_tags $name = strip_tags($_POST[‘name‘]); $name = substr($name,0,40); //clean out any potential hexadecimal characters $name = cleanHex($name); //continue processing.... }else{ //stop all processing! remote form posting attempt! } } $token = md5(uniqid(rand(), true)); $_SESSION[‘token‘]= $token; function cleanHex($input){ $clean = preg_replace("![][xX]([A-Fa-f0-9]{1,3})!", "",$input); return $clean; } ?> <form action="<?php echo $_SERVER[‘PHP_SELF‘];?>" method="post"> <p><label for="name">Name</label> <input type="text" name="name" id="name" size="20" maxlength="40"/></p> <input type="hidden" name="token" value="<?php echo $token;?>"/> <p><input type="submit" name="submit" value="go"/></p> </form>