不要直接访问超全局 $_REQUEST 数组
Do not Access Superglobal $_REQUEST Array Directly
到目前为止,我一直在我的 PHP 中访问 $_REQUEST,如下所示:
//JS
xmlhttp.open("GET", "logic.php?q=" + itemOne + "&w=" + itemTwo, true);
//PHP
$q = $_REQUEST['q'];
$w = $_REQUEST['w'];
通过 MSSQL 服务器查询发送的项目 (SQLSRV)。
我的问题是执行上述操作的最佳实践方法是什么differently/correctly?我在某处读到这在易受攻击方面并不好SQL 注入攻击等
My question is what would be the best-practice methods for doing the
above differently/correctly?
您提供的示例 JavaScript 使用了 GET
请求。 "correct" 访问参数的方法是通过 PHP 的 $_GET
数组。使用 $_REQUEST
是一个坏习惯,因为您无法控制数据的到达方式。我给你举个简单的例子:
使用基于令牌的身份验证的网站通常要求您将令牌作为 POST
数据发送。如果通过 URL 参数交换私人信息被认为是不安全的,从 $_REQUEST
获取数据的 PHP 脚本无法知道数据是如何到达的,并且会错误地接受一个错误的发送令牌。更好的脚本会在 $_POST
中查找令牌。如果不存在,则没有令牌;即使用户试图在 url.
中发送它
I read somewhere that this is not good in terms of being vulnerable to
SQL injection attacks etc.
SQL 注入与 $_REQUEST
无关。每当您直接在 SQL 查询中插入用户提交的数据时,无论数据是否来自 $_REQUEST
、$_GET
、文件...这种可怕的代码设计都会让攻击者采取控制你的 SQL 并指示你的数据库执行他或她希望的任何命令(例如:泄露或删除你的数据)。为了保护自己免受它的侵害,请了解 准备好的语句 和 参数化查询
到目前为止,我一直在我的 PHP 中访问 $_REQUEST,如下所示:
//JS
xmlhttp.open("GET", "logic.php?q=" + itemOne + "&w=" + itemTwo, true);
//PHP
$q = $_REQUEST['q'];
$w = $_REQUEST['w'];
通过 MSSQL 服务器查询发送的项目 (SQLSRV)。
我的问题是执行上述操作的最佳实践方法是什么differently/correctly?我在某处读到这在易受攻击方面并不好SQL 注入攻击等
My question is what would be the best-practice methods for doing the above differently/correctly?
您提供的示例 JavaScript 使用了 GET
请求。 "correct" 访问参数的方法是通过 PHP 的 $_GET
数组。使用 $_REQUEST
是一个坏习惯,因为您无法控制数据的到达方式。我给你举个简单的例子:
使用基于令牌的身份验证的网站通常要求您将令牌作为 POST
数据发送。如果通过 URL 参数交换私人信息被认为是不安全的,从 $_REQUEST
获取数据的 PHP 脚本无法知道数据是如何到达的,并且会错误地接受一个错误的发送令牌。更好的脚本会在 $_POST
中查找令牌。如果不存在,则没有令牌;即使用户试图在 url.
I read somewhere that this is not good in terms of being vulnerable to SQL injection attacks etc.
SQL 注入与 $_REQUEST
无关。每当您直接在 SQL 查询中插入用户提交的数据时,无论数据是否来自 $_REQUEST
、$_GET
、文件...这种可怕的代码设计都会让攻击者采取控制你的 SQL 并指示你的数据库执行他或她希望的任何命令(例如:泄露或删除你的数据)。为了保护自己免受它的侵害,请了解 准备好的语句 和 参数化查询