我在我的网站上使用load()jquery函数,传递用户,id,name等变量......
$('#DIV').load(page.php?id=' + id + '&user=' + user);
在加载的page.php上使用它。
if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{ ...whatever...} else { ...the_other... }
似乎没问题,我的问题是,如果你用firebug检查页面...并修改jquery加载函数中的变量,你可以代表其他用户行事。
我可以阻止这种情况发生吗?
答案 0 :(得分:3)
您需要检查用户是否已在服务器端登录。
实施例: 的的login.php 强>
session_start();
$_SESSION['user'] = 'User ID goes here';
无论您需要检查用户是否是他所说的人
<强>安全(ISH).PHP 强>
session_start();
if($_SESSION['user'] == 'User ID goes here')
{
//code
}
有关会话的详细信息,请参阅PHP documentation
答案 1 :(得分:0)
您只能通过修改发送到服务器的信息,无法为其他用户执行操作。您需要做的是以某种方式验证每个请求的使用情况。可能有一个令牌或cookie需要与每个请求一起发送到服务器?
用户的定义是什么?您是如何验证这些用户的?你在使用cookies或会话吗?在代码中的某处,您需要确保经过身份验证的用户可以访问所请求的信息。根据您对用户进行身份验证的方式,您的代码最终可能会出现以下情况:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{ ...whatever...} else { ...the_other... }
或者更好的是,为什么要实际发送哪些用于服务器呢?而不是使用GET变量,为什么不采用以下方法:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{ //instead of getting user info with $_GET, get it with $_COOKIE or $_SESSION }
答案 2 :(得分:0)
您将需要执行某种形式的检查服务器端(可能使用cookie,会话变量或两者)。某些东西,以便当服务器看到请求时,它可以说“用户ID匹配”,或“不,它不匹配”。
一旦你完成了这个,用户参数将没有实际意义,所以你不必担心欺骗,因为你已经能够事先确认它们。