按订单排序 - 可能的安全漏洞?

时间:2011-01-12 12:05:00

标签: php security url

我有这样的代码:

ORDER BY $order

其中'$ order'取自网址,如:

http://mywebsite.com/page.php?order=Bananas DESC

有意图的人是否可以在网址末尾添加自己的代码,从而做任何他们喜欢的事情?

3 个答案:

答案 0 :(得分:2)

如果你不检查$order变量上的内容,那么你的代码肯定会受到潜在的SQL注入攻击。

因此,您需要通过确保从GET命令获得的内容实际上是一个有效的order by子句来清理输入变量(您可以使用正则表达式)。

或者您可以为您的应用程序执行某种编码以通过子句形成订单。像制作一样:

http://mywebsite.com/page.php?orderField=1&orderType=DESC

然后将代码1映射到Bananas orderField参数,将ASCDESC映射到orderType参数。< / p>

答案 1 :(得分:2)

可能是的。根据您的配置,攻击者可以插入以下内容:

“香蕉;放桌学生”

也可能是子查询而不是多个语句

我要么自己构建订单条款,要么将其与白名单进行比较。

答案 2 :(得分:0)

示例:

SELECT * FROM bugs ORDER BY $column $direction

您必须定义可能的选项:

 $column =array('id','name',....);
$direction = array('ASC','DESC'); 

然后:

if(array_key_exists ($_REQUEST['column'],$column){
    $column = $column[  $_REQUEST['column']  ];
}else{
...defaults....
}