国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP防止遠程非法提交表單程序代碼

2024-05-04 21:58:45
字體:
來源:轉載
供稿:網友

防止遠程提交表單是一個防止黑客非法遠程提交數據來給我們網站造成安全,下面我來介紹在php中防止遠程非法提交表單實例.

具體方法

一、PHP防止站外提交數據的方法,代碼如下:

  1. <?php 
  2. $servername=$HTTP_SERVER_VARS['SERVER_NAME'];  
  3. $sub_from=$HTTP_SERVER_VARS["HTTP_REFERER"];  
  4. $sub_len=strlen($servername);  
  5. $checkfrom=substr($sub_from,7,$sub_len);  
  6. if($checkfrom!=$servername){  
  7. echo("警告!你正在從外部提交數據!!請立即終止?。?quot;);  
  8. exit;  
  9. }  
  10. ?> 

把以上代碼放到需要防止外部提交數據的頁面中,如果是直接輸入網址或者是從外部網部鏈接到本頁,則顯示:警告!你正在從外部提交數據,請立即終止,如果系從本站鏈接或通過表單提交到該頁,則無此提示,這樣做主要是為了防止一些偽造表單向站內提交數據 .

上面的代碼通過curl可直接跳過了,我們可以參考dz論壇登錄的一種做法.

處理遠程表單提交更好的方式是,根據一個惟一的字符串或時間戳生成一個令牌,并將這個令牌放在會話變量和表單中,提交表單之后,檢查兩個令牌是否匹配,如果不匹配,就知道有人試圖從表單的遠程副本發送數據.

要創建隨機的令牌,可以使用 PHP 內置的 md5()、uniqid() 和 rand() 函數,如下代碼:

  1. <?php 
  2. session_start();     
  3.          
  4. if ($_POST['submit'] == "go"){     
  5.     //check token     
  6.     if ($_POST['token'] == $_SESSION['token']){     
  7.         //strip_tags     
  8.         $name = strip_tags($_POST['name']);     
  9.         $name = substr($name,0,40);     
  10.         //clean out any potential hexadecimal characters     
  11.         $name = cleanHex($name);     
  12.         //continue processing....     
  13.     }else{     
  14.         //stop all processing! remote form posting attempt!     
  15.     }     
  16. }     
  17.          
  18. $token = md5(uniqid(rand(), true));     
  19. $_SESSION['token']= $token;     
  20.          
  21.          
  22. function cleanHex($input){     
  23.     $clean = preg_replace("![][xX]([A-Fa-f0-9]{1,3})!""",$input);     
  24.     return $clean;     
  25. }     
  26. ?>     
  27.          
  28.   //開源代碼Vevb.com       
  29. <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">     
  30. <p><label for="name">Name</label>     
  31. <input type="text" name="name" id="name" size="20" maxlength="40"/></p>     
  32. <input type="hidden" name="token" value="<?php echo $token;?>"/>     
  33. <p><input type="submit" name="submit" value="go"/></p>     
  34. </form> 

沒事把以前寫的asp寫出來,ASP防止外部提交數據的方法,代碼如下:

  1. <%  
  2. Server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))  
  3. Server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))  
  4. If   mid(server_v1,8,len(server_v2))<>server_v2   then  
  5.      Response.write "警告!你正在從外部提交數據??!請立即終止??!"  
  6.      Response.End  
  7. End if  
  8. %> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 渝中区| 麟游县| 育儿| 漳平市| 彭州市| 雅江县| 景泰县| 嘉兴市| 南通市| 讷河市| 永宁县| 嘉善县| 沿河| 苍梧县| 临漳县| 资兴市| 祁连县| 土默特左旗| 吴旗县| 通渭县| 类乌齐县| 聂拉木县| 咸丰县| 东海县| 宜州市| 泰和县| 青铜峡市| 大悟县| 军事| 栖霞市| 万山特区| 济南市| 渝中区| 蓬溪县| 玛沁县| 元谋县| 南陵县| 南郑县| 体育| 元江| 嘉善县|