Php load()函数的安全问题
我在我的站点上使用load()jquery函数,传递变量,如user、id、namePhp load()函数的安全问题,php,jquery,Php,Jquery,我在我的站点上使用load()jquery函数,传递变量,如user、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')
$('#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加载函数中的变量,您可以代表其他用户行事
我能阻止这一切发生吗 您不应该仅仅通过修改发送到服务器的信息来为其他用户执行操作。您需要做的是以某种方式验证每个请求的使用。是否有一个令牌或cookie需要随每个请求一起发送到服务器 什么定义了用户?您如何验证这些用户?您正在使用cookie还是会话?在代码中的某个地方,您需要确保经过身份验证的用户允许访问请求的信息。根据您对用户进行身份验证的方式,您的代码可能会以如下方式结束:
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 }
您不应该仅仅通过修改发送到服务器的信息来为其他用户执行操作。您需要做的是以某种方式验证每个请求的使用。是否有一个令牌或cookie需要随每个请求一起发送到服务器 什么定义了用户?您如何验证这些用户?您正在使用cookie还是会话?在代码中的某个地方,您需要确保经过身份验证的用户允许访问请求的信息。根据您对用户进行身份验证的方式,您的代码可能会以如下方式结束:
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 }
您将需要执行某种形式的服务器端检查(可能使用cookie、会话变量,或者两者都使用)。当服务器看到请求时,可以说“用户id匹配”或“不匹配”
一旦你做到了这一点,用户参数将是没有意义的,因此你不必担心欺骗,因为你已经能够事先确认这是他们。你将需要进行某种形式的服务器端检查(可能使用cookie、会话变量或两者)。当服务器看到请求时,可以说“用户id匹配”或“不匹配”
一旦你做到了这一点,用户参数将是没有意义的,因此你不必担心欺骗,因为你已经能够事先确认这是他们。你需要检查用户是否在服务器端登录 例如: Login.php
session_start();
$_SESSION['user'] = 'User ID goes here';
session_start();
if($_SESSION['user'] == 'User ID goes here')
{
//code
}
无论您需要在何处检查用户是否是他所说的用户
安全(ish).php
session_start();
$_SESSION['user'] = 'User ID goes here';
session_start();
if($_SESSION['user'] == 'User ID goes here')
{
//code
}
有关会话的更多信息,请参见。您需要检查用户是否已登录到服务器端 例如: Login.php
session_start();
$_SESSION['user'] = 'User ID goes here';
session_start();
if($_SESSION['user'] == 'User ID goes here')
{
//code
}
无论您需要在何处检查用户是否是他所说的用户
安全(ish).php
session_start();
$_SESSION['user'] = 'User ID goes here';
session_start();
if($_SESSION['user'] == 'User ID goes here')
{
//code
}
有关会话的更多信息,请参见第页的。php I have
$id=$\u GET['id']$用户=$\u获取['user']代码>,我试过你可以做各种事情,当用户点击“喜欢”按钮时,它会更新数据库。。。当我修改信息时,#DIV会重新加载新的信息,并且始终可以更改。如果要使用它们,请确保它不仅仅是一个纯文本“这是我正在比较的值”。使用诸如篡改数据之类的东西可以使该值非常明显。您最好存储SESSID以参考实际的存储位置。在任何页面上,您将用户信息存储在哪里?当您登录用户时,您将他们的身份验证存储在哪里?在page.php上,我有$id=$\u GET['id']$用户=$\u获取['user']代码>,我试过你可以做各种事情,当用户点击“喜欢”按钮时,它会更新数据库。。。当我修改信息时,#DIV会重新加载新的信息,并且始终可以更改。如果要使用它们,请确保它不仅仅是一个纯文本“这是我正在比较的值”。使用诸如篡改数据之类的东西可以使该值非常明显。您最好存储SESSID以参考实际的存储位置。在任何页面上,您将用户信息存储在哪里?当用户登录时,您将其身份验证存储在何处?