我有一個網站,在瀏覽器中我向端點發送 POST 請求,其中包含有關該頁面中用戶訪問互動的一些資訊。javascript 瀏覽器代碼為用戶訪問生成一個 UUID,當用戶與頁面互動時,我發送帶有更新訪問資訊的 POST 請求。
在后端,我將此訪問資訊保存到資料庫中。在后端服務中,我正在驗證請求的主機是我的網頁,也是一個有效的用戶代理。但這很容易被 curl、郵遞員或任何僅修改主機和用戶代理標頭的人劫持。由于該服務是公開的,因為瀏覽器需要將資訊發送到后端,我如何實作方法、簽名或其他任何內容以確保后端接收的是來自我的網頁,并且沒有其他人向此端點發送訪問資訊不是在網頁中生成的?
uj5u.com熱心網友回復:
如果在您的表單中,您創建了一個隱藏輸入,該輸入具有您在會話中傳遞的值。當您發布請求時,您會檢查發布的值是否等于會話中的變數。例如 :
檔案1.php
<?php
$myvalue = uniqid();
$_SESSION['myvalue'] = $myvalue;
?>
<form action="File2.php">
<input type="hidden" id="var1" name="var1" value="<?php echo $myvalue; ?>" />
</form>
然后在收到發布請求的檔案中:File2.php
<?php
if (isset($_POST['var1']) and isset($_SESSION['myvalue'] and $_POST['var1']==$_SESSION['myvalue']) {
// ok
}
else {
//not ok
}
?>
uj5u.com熱心網友回復:
添加 ReCaptcha:https : //developers.google.com/recaptcha/docs/v3
幾乎不可能以任何其他方式發送資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338468.html
