首頁 後端開發 php教程 PHP 防止遠端表單提交

PHP 防止遠端表單提交

Nov 23, 2016 pm 01:27 PM

Web 的好處是可以分享資訊和服務。壞處也是可以分享資訊和服務,因為有些人做事毫無顧忌。
以表單為例。任何人都能夠存取一個 Web 站點,並使用瀏覽器上的 File > Save As 建立表單的本機副本。然後,他可以修改action 參數來指向一個完全限定的URL(不指向formHandler.php,而是指向http://www.yoursite.com/formHandler.php,因為表單在這個網站上),做他希望的任何修改,點選Submit,伺服器會把這個表單資料當作合法通訊流接收。
首先可能考慮檢查 $_SERVER['HTTP_REFERER'],從而判斷請求是否來自自己的伺服器,這種方法可以擋住大多數惡意用戶,但是擋不住最高明的駭客。這些人足夠聰明,能夠篡改頭部中的引用者信息,使表單的遠端副本看起來像是從您的伺服器提交的。
處理遠端表單提交更好的方式是,根據一個惟一的字串或時間戳記產生一個令牌,並將這個令牌放在會話變數和表單中。提交表單之後,檢查兩個令牌是否符合。如果不匹配,就知道有人試圖從表單的遠端副本發送資料。
要建立隨機的令牌,可以使用PHP 內建的md5()、uniqid() 和rand() 函數,如下所示:

<span style="font-size: small;"><?php  
session_start();  
  
if ($_POST[&#39;submit&#39;] == "go"){  
    //check token  
    if ($_POST[&#39;token&#39;] == $_SESSION[&#39;token&#39;]){  
        //strip_tags  
        $name = strip_tags($_POST[&#39;name&#39;]);  
        $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[&#39;token&#39;]= $token;  
  
  
function cleanHex($input){  
    $clean = preg_replace("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input);  
    return $clean;  
}  
?>  
  
  
<form action="<?php echo $_SERVER[&#39;PHP_SELF&#39;];?>" 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>   </span>
登入後複製

 這種技術是有效的,這是因為在PHP 中會話資料無法在伺服器之間遷移。即使有人獲得了您的 PHP 源代碼,將它轉移到自己的伺服器上,並向您的伺服器提交訊息,您的伺服器接收的也只是空的或畸形的會話令牌和原來提供的表單令牌。它們不匹配,遠端表單提交就失敗了。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles