到目前为止,我一直在我的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 并指示您的数据库执行他或她希望的任何命令(例如:泄露或删除您的数据)。为了保护自己免受攻击,请了解预准备语句和参数化查询