我有 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" />
我需要做些什么来提高安全性?
答案 0 :(得分:1)
可以添加以下内容,仅用于增加安全措施,
在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
}
答案 1 :(得分:0)
我建议您不要将userid提供给客户端。您可以将其存储在会话变量中吗?
答案 2 :(得分:0)
如果此user_id用于检索与登录用户相关的某些机密信息,那么这听起来像是一个安全漏洞。
您应该从会话变量
获取user_id答案 3 :(得分:0)
我认为将&#39; user_id&#39;放在一起并不是一个好主意。在客户端HTML中并发送回服务器。您需要对从客户端发送的数据进行更多验证(进行一些检查和过滤)。
我建议使用session而不是将其发送到客户端,但如果同时编辑两个或多个数据(多选项卡),则会遇到问题,所以你需要使用session和一些技巧。
通过此示例,您的真实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]);
答案 4 :(得分:0)
您应该使用POST而不是GET,并且您还应该使用ssl,以便yuor使用https而不是http来保持sart。现在您已足够安全,但您可以通过添加额外的加密层来提高安全性。