我有這樣的代碼:
ORDER BY $order
其中「$爲了」從URL採取這樣的:
http://mywebsite.com/page.php?order=Bananas DESC
可能有人用錯誤的意向,在末尾加上自己的代碼的URL,從而做他們喜歡的任何事情?
我有這樣的代碼:
ORDER BY $order
其中「$爲了」從URL採取這樣的:
http://mywebsite.com/page.php?order=Bananas DESC
可能有人用錯誤的意向,在末尾加上自己的代碼的URL,從而做他們喜歡的任何事情?
如果您不檢查$order
變量上的內容,那麼您的代碼肯定會暴露給潛在的SQL注入攻擊。
因此,您需要確保從GET
命令得到的內容實際上是有效的order by
子句(可以使用正則表達式)來清理輸入變量。
或者你可以爲你的應用程序做一些編碼以形成按子句的順序。喜歡的東西製作:
http://mywebsite.com/page.php?orderField=1&orderType=DESC
然後映射在你的代碼1
到Bananas
爲orderField
參數,ASC
或DESC
您orderType
參數。
可能是的。根據您的配置,攻擊者可以插入這樣的事情:
「香蕉;刪除表生」
子查詢,而不是多條語句可能可以過
我想無論是建立秩序條款自己,或將其與白名單進行比較。
例子:
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....
}
這個問題問得好。在這裏你可以找到一個白名單示例代碼http://stackoverflow.com/questions/2993027/in-php-when-submitting-strings-to-the-db-should-i-take-care-of-illegal-characters/ 2995163#2995163 – 2011-01-12 12:26:56