PHP防止遠程非法提交表單程式碼_PHP教程

來源:互聯網
上載者:User
防止遠程提交表單是一個防止駭客非法遠程提交資料來給我們網站造成安全,下面我來介紹在php中防止遠程非法提交表單一實例。

具體方法

一、PHP防止站外提交資料的方法

代碼如下 複製代碼
$servername=$HTTP_SERVER_VARS['SERVER_NAME'];
$sub_from=$HTTP_SERVER_VARS["HTTP_REFERER"];
$sub_len=strlen($servername);
$checkfrom=substr($sub_from,7,$sub_len);
if($checkfrom!=$servername){
echo("警告!你正在從外部提交資料!!請立即終止!!");
exit;
}
?>

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

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


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

要建立隨機的令牌,可以使用 PHP 內建的 md5()、uniqid() 和 rand() 函數,如下所示

代碼如下 複製代碼
session_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;
}
?>


沒事把以前寫的asp寫出來

ASP防止外部提交資料的方法

代碼如下 複製代碼
<%
Server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
Server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
If mid(server_v1,8,len(server_v2))<>server_v2 then
Response.write "警告!你正在從外部提交資料!!請立即終止!!"
Response.End
End if
%>

http://www.bkjia.com/PHPjc/629612.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629612.htmlTechArticle防止遠程提交表單是一個防止駭客非法遠程提交資料來給我們網站造成安全,下面我來介紹在php中防止遠程非法提交表單一實例。 具體方法...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.