掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Discuz是什么估計(jì)不需要說(shuō),只要了解Web的人基本上都聽(tīng)說(shuō)過(guò),特別是接觸過(guò)PHP的朋友。在最近的一個(gè)項(xiàng)目中就是跟附件有關(guān)系的,因此這里就簡(jiǎn)單的看看這個(gè)附件路徑的這些事兒。其實(shí)有時(shí)候我們分析思考些問(wèn)題還是很有趣的,下面我們就開(kāi)始吧。
forum.php?mod=attachment&aid=
ODYzODkzfDM3OTRkYWE1fDE0NDg0Mzk1NzV8MTY3NDA0MnwyMDIyNTg1¬humb=yes
上面就是論壇的一張圖片附件的下載地址,可以看到forum.php腳本中有三個(gè)參數(shù),第一個(gè)不用說(shuō)就是M是attachment,后面一個(gè)是跟縮略圖相關(guān)的;這里我們主要說(shuō)說(shuō)中間這一個(gè),這個(gè)aid參數(shù)跟附件在數(shù)據(jù)表中的id字段aid一樣,那么它后面的值是什么呢?難道是隨機(jī)生成的毫無(wú)規(guī)律的字符么?
在模版的discuzcode.htm中我們可以看到這里的aid是$aidencode變量,而繼續(xù)往上我們可以看到imagelist方法,里面有這么一句代碼:
$aidencode = packaids($attach);
很顯然,這個(gè)地方又留下了packaids,這個(gè)方法在function_attachment.php中
function packaids($attach) { global $_G; return aidencode($attach['aid'], 0, $_G['tid']); }
這個(gè)方法中又有一個(gè)aidencode方法,我們可以在核心函數(shù)庫(kù)中找到這個(gè)方法,這個(gè)方法的代碼如下:
function aidencode($aid, $type = 0, $tid = 0) { global $_G; $s = !$type ? $aid.'|'.substr(md5($aid.md5($_G['config']['security']['authkey']).TIMESTAMP.$_G['uid']), 0, 8).'|'.TIMESTAMP.'|'.$_G['uid'].'|'.$tid : $aid.'|'.md5($aid.md5($_G['config']['security']['authkey']).TIMESTAMP).'|'.TIMESTAMP; return rawurlencode(base64_encode($s)); }
到這里我們就應(yīng)該明白了這是什么意思了,也就是這段亂七八糟的東西其實(shí)包含了附件的id、網(wǎng)站的安全碼md5后的前紀(jì)委、時(shí)間、用戶id等信息。我們現(xiàn)在可以用base64_decode方法來(lái)把開(kāi)頭的字符串跑一下。結(jié)果出現(xiàn)返回如下信息:
863893|3794daa5|1448439575|1674042|2022585
上面依次就是該附件的id、安全碼(處理后的)、時(shí)間、我的ID號(hào)、主題ID;其實(shí)這里好像暴露了我的什么東西,對(duì)這條信息是Discuz上面的,呵呵,事情就是這樣子的。
本文為微構(gòu)網(wǎng)絡(luò)旗下Discuz開(kāi)發(fā)團(tuán)隊(duì)木泉網(wǎng)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處!
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流