不要直接访问超全局 $_REQUEST 数组



到目前为止,我一直在我的PHP中访问$_REQUEST,如下所示:

//JS
xmlhttp.open("GET", "logic.php?q=" + itemOne  + "&w=" + itemTwo, true);
//PHP
$q = $_REQUEST['q'];
$w = $_REQUEST['w'];

通过发送的项目用于 MSSQL 服务器查询 (SQLSRV)。

我的问题是,以不同/正确方式执行上述操作的最佳实践方法是什么?我在某处读到,就容易受到SQL注入攻击等而言,这并不好。

我的问题是,执行 以上不同/正确?

您给出的示例 JavaScript 使用了GET请求。访问参数的"正确"方法是通过PHP的$_GET数组。 使用$_REQUEST是一个坏习惯,因为您无法控制数据到达的方式。 我给你举一个简单的例子:

使用令牌基础身份验证的网站通常要求你将令牌作为POST数据发送。如果通过 URL 参数交换私人信息被认为是不安全的,那么从$_REQUEST获取数据的 PHP 脚本无法知道数据是如何到达的,并且会错误地接受发送错误的令牌。 更好的脚本将在$_POST中查找令牌。 如果它不存在,那么就没有令牌;即使用户尝试在 URL 中发送它。

我在某处读到,就易受攻击而言,这并不好 SQL注入攻击等

SQL注入与$_REQUEST无关。 每当直接在 SQL 查询中插入用户提交的数据时,无论数据来自$_REQUEST$_GET、文件......这种可怕的代码设计允许攻击者控制您的 SQL 并指示您的数据库执行他或她希望的任何命令(例如:泄露或删除您的数据)。为了保护自己免受攻击,请了解预准备语句参数化查询

相关内容

  • 没有找到相关文章