国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP 小心urldecode引發(fā)的SQL注入漏洞

2024-05-04 23:16:56
字體:
供稿:網(wǎng)友
Ihipop 學(xué)校的 Discuz X1.5 論壇被黑,在那里吵了一個下午。Google 一下“Discuz! X1-1.5 notify_credit.php Blind SQL injection exploit”,你就知道。

Discuz 是國內(nèi)很流行的論壇系統(tǒng),被黑的網(wǎng)站應(yīng)該會很多吧。不過我對入侵別人的網(wǎng)站不感興趣,同時也鄙視那些代碼都不會寫只會使用別人放出的工具攻擊的所謂的“黑客”。


粗略看了一下代碼,這個 SQL 注入漏洞是 urldecode 函數(shù)造成的。在 PHP 手冊中,urldecode 函數(shù)下面有一個警告:

The superglobals $_GET and $_REQUEST are already decoded. Using urldecode() on an element in $_GET or $_REQUEST could have unexpected and dangerous results.

而 Discuz 的開發(fā)人員(估計是新手)畫蛇添足,多加了一個 urldecode:

復(fù)制代碼 代碼如下:


foreach($_POST as $k => $v) {
$value = urldecode($v);
$this->setParameter($k, $value);
}


單引號被 urlencode 兩次以后是 %2527,然后 POST,PHP 內(nèi)部在生成全局變量 $_POST 的時候會先 urldecode,得到 %27,然后 PHP 會檢查 Magic Quotes 的設(shè)置,但是無論是否開啟 Magic Quotes,%27 都不會被 addslashes,因為這時根本沒有單引號。但是這時如果你在 PHP 代碼中畫蛇添足的加上 urldecode,%27就變成單引號了,然后……你懂的。

在我初學(xué) PHP 的時候,看的是學(xué)校圖書館的一本爛書,里面根本就沒寫 PHP 在處理表單的時候會自動 urldecode,所以自己用 urldecode 函數(shù)來解碼(依稀記得書上好像也是這么寫的,真是誤人子弟啊)。

總結(jié)一下,就是:1、選擇一本好書非常重要;2、慎用 urldecode 函數(shù)。3、注意 PHP 手冊中的警告。
原文來自
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鲁山县| 禄丰县| 上饶县| 内乡县| 定远县| 石家庄市| 揭阳市| 卓尼县| 南汇区| 剑川县| 台湾省| 葫芦岛市| 玉山县| 临海市| 怀来县| 韩城市| 和平县| 丰镇市| 长武县| 繁峙县| 云霄县| 香港| 安溪县| 裕民县| 普陀区| 岢岚县| 中超| 广灵县| 青海省| 绥江县| 芷江| 永登县| 昌平区| 崇文区| 隆安县| 榆树市| 类乌齐县| 溧水县| 洞头县| 西贡区| 渝北区|