我正在使用Wordpress,并希望将用户ID发送到服务器以便使用AJAX进行处理。所以我将这个值(user_id
)存储在一个隐藏的输入文本框中,每次我读取这个值时,将它传递给jQuery并通过AJAX发送到服务器。问题是用户可以更改此值(通过检查页面)。以下代码是我的尝试之一:
<input hidden="true" type="text" id="userid" value="<?php echo get_current_user_id() ?>">
<script type="text/javascript">
$( document ).ready( function(){
var previousValue = $("#userid").val();
$("#userid").keyup(function(e){
var currentValue = $(this).val();
if(currentValue != previousValue){
$('#userid').val(previousValue);
}
});
}
</script>
但显然当用户检查页面(通过Chrome,Firefox或其他任何内容)并更改值时,它无法执行。如何验证用户ID?
答案 0 :(得分:1)
这不可能。您无法保证客户端上发生的任何事情。防止某人篡改用户ID的所有方法都依赖于浏览器执行它,但客户端可以在其计算机上运行任何软件。因此,所有安全安排必须基于客户发送的任何数据都不可信任的假设。
我想你要做的就是识别用户。实际上可以通过使用PHP session来实现。而是将用户ID存储在PHP会话变量中。如果需要,可以将其传递给客户端,但不要依赖它来强制执行任何身份验证。换句话说,不要让客户端将其传递回服务器。
那么,这对你来说意味着什么呢? Wordpress已经使用PHP会话来跟踪用户。当你进行AJAX调用时,我认为它会进入某个PHP页面。该PHP脚本应该只使用get_current_user_id()
从Wordpress(即服务器)获取用户ID,而不是从客户端发送它。
答案 1 :(得分:0)
请按照以下步骤操作: