Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php load()函数的安全问题_Php_Jquery - Fatal编程技术网

Php load()函数的安全问题

Php 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')

我在我的站点上使用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') 
       { ...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以参考实际的存储位置。在任何页面上,您将用户信息存储在哪里?当用户登录时,您将其身份验证存储在何处?