我一直在PHP中访问$ _REQUEST,如下所示:
//JS
xmlhttp.open("GET", "logic.php?q=" + itemOne + "&w=" + itemTwo, true);
//PHP
$q = $_REQUEST['q'];
$w = $_REQUEST['w'];
通过get用于MSSQL服务器查询(SQLSRV)的项目。
我的问题是以不同方式/正确方式执行上述操作的最佳实践方法是什么?我在某处读到,这对于易受SQL注入攻击等而言并不好。
答案 0 :(得分:1)
我的问题是做什么的最佳实践方法 不同/正确吗?
您提供的示例JavaScript使用了GET
请求。 "正确"访问参数的方法是通过PHP的$_GET
数组。使用$_REQUEST
是一个坏习惯,因为你无法控制数据的到达方式。我给你一个简单的例子:
使用令牌基本身份验证的网站通常要求您将令牌作为POST
数据发送。如果通过URL参数交换私人信息被认为是不安全的,那么从$_REQUEST
获取数据的PHP脚本无法知道数据是如何到达的,并且会错误地接受错误发送的令牌。更好的脚本会在$_POST
中查找令牌。如果不存在,则没有令牌;即使用户试图在网址中发送它。
我在某个地方读到,这对于易受伤害而言并不好 SQL注入攻击等。
SQL注入并不特别与$_REQUEST
有关。无论何时直接在SQL查询中插入用户提交的数据,无论数据来自$_REQUEST
,$_GET
,还是文件,都会发生这种情况......这种可怕的代码设计允许攻击者控制您的SQL并指示您的数据库执行他或她希望的任何命令(例如:泄露或删除您的数据)。为了保护自己免受攻击,请了解预备语句和参数化查询