[英]How to send data between ajax and php in secure way?
我有index.php , ajax.js和process.php (在這里獲取我的AJAX數據)。
我以這種方式使用AJAX:
var = $('user_id').val();
$.ajax({
url : "somefile.php",
method : "GET",
data : {'user_id' : user_id},
cache : false,
success : function(data) {
// do something with "data"
}
);
我從PHP文件收到的User_id:
<input value="<?php echo $user_id; ?>" id="user_id" />
我需要做些什么來提高安全性?
可以添加以下內容,只是為了提高安全性,
用PHP代碼
<input value="<?php echo base64_encode($user_id); ?>" id="user_id" />
在JS代碼中:
var = $('user_id').val();
$.ajax({
url : "somefile.php",
method : "POST",
data : {'user_id' : user_id},
cache : false,
success : function(data) {
// do something with "data"
}
);
在“ somefile.php”中,如果僅接受使用POST方法發布的變量,則使用$ _POST方法。 可以使用:
if(isset($_POST['user_id']))
{
$user_id=$_POST['user_id']
$user_id=base64_decode($user_id);
//all functionality here
}
else
{
//shoot error message
}
我建議您不要將用戶名提供給客戶端。 您可以將其存儲在會話變量中嗎?
如果使用此user_id檢索與登錄用戶有關的一些機密信息,那么這聽起來像是安全漏洞。
您應該從會話變量獲取user_id
我認為將“ user_id”放入客戶端HTML並發送回服務器不是一個好主意。 您需要對從客戶端發送的數據進行更多驗證(進行一些檢查和過濾)。
我建議使用會話而不是將其發送給客戶端,但是如果同時編輯兩個或多個數據(多選項卡),則會遇到問題,因此您需要使用會話和一些技巧。
在此示例中,您的真實user_id
將永遠不會發送到客戶端。
index.php:
session_start();
$edit_session_id = md5(uniqid() . microtime(true));
$_SESSION['edit_' . $edit_session_id] = $user_id;
ajax.js:
var edit_session_id = $('#edit_session_id').val();
$.ajax({
url : "process.php",
method : "POST",
data : {'edit_session_id' : edit_session_id},
cache : false,
success : function(data) {
// do code
}
);
process.php:
session_start();
$edit_session_id = $_POST['edit_session_id'];
if(!isset($_SESSION['edit_' . $edit_session_id]))
{
die('Invalid edit session, please go back & refresh');
}
$user_id = $_SESSION['edit_' . $edit_session_id];
// Do something with user_id
//Clear the editing session
unset($_SESSION['edit_' . $edit_session_id]);
您應該使用POST而不是GET,還應該使用ssl,以便使用https而不是http來發送url。現在您已經足夠安全了,但是可以通過添加額外的加密層來提高安全性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.