平時開發(fā)們用Django寫網(wǎng)站,你作為黑盒測試升一下自己的能力嗎撞牢?
今天我們就來說下宙彪,如何測試一個網(wǎng)站的后端是由Django編寫的。本文小編還為大家準(zhǔn)備了一套電子書等限,私信回復(fù)【PDF】就可以獲取了
1. 利用Debug模式異常頁面判斷
最簡單的就是爸吮,當(dāng)DEBUG模式開啟時芬膝,訪問不存在的頁面或出錯的頁面會有特殊的異常拋出。像這樣的頁面形娇,我稱之為黃代碼(哈哈哈锰霜,寫Django的自己知道,是不是經(jīng)常會有)桐早,就可以確定是Django了
2. 通過CSRF Token驗(yàn)證
訪問一個包含表單的頁面癣缅,表單中會有一個hidden input,用來存儲CSRF檢測的Token哄酝,其名字比較獨(dú)特友存,csrfmiddlewaretoken:
遇到有這個名字的表單,基本可以確定是Django陶衅。
假如開發(fā)者將 csrfmiddlewaretoken 這個名字換了屡立,怎么辦?
我們可以把剛剛的hidden input 給刪了搀军,然后登陸膨俐,因?yàn)槿鄙貱SRF TOKEN,會返回一個Django的CSRF TOKEN錯誤頁面給你:
3. Django Admin
安裝Django的時候會自帶一個后臺奕巍,地址是/admin(不過大多數(shù)網(wǎng)站會替換后臺地址):
遇到這個樣式的后臺界面吟策,可以確定是Django。
4. 通過HTTP頭
有的Django站點(diǎn)會返回Server頭:
雖然通過這種方式不能100%確定是Django后臺的止,但范圍就縮的很小了檩坚,是個Python,也就那幾套Web了诅福。
5. 拼湊細(xì)節(jié)
比如匾委,Django默認(rèn)找回密碼的鏈接是 /password_reset/ ,郵件發(fā)送成功是 /password_reset/done/ 氓润,找回密碼鏈接是 reset/(?P<uidb64>[0-9A-Za-z_-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/ 赂乐,找回密碼成功是 /reset/done/ ,正常修改密碼是 /password_change/ 咖气,修改成功是 /password_change/done/ 挨措。
不過這些鏈接都可以改,只能用作參考崩溪。
再比如浅役,django文件上傳的目錄通常叫 media ,注冊時密碼要求8位以上數(shù)字加字母伶唯,分頁通常是 ?page=2 而不會是 /page/2/ 觉既,表單輸入框的id通常是 id_xxxx ,中文的情況下還會有一些特定的翻譯語句,如 請上傳一張有效的圖片瞪讼。您所上傳的文件不是圖片或者是已損壞的圖片钧椰。 、 CSRF驗(yàn)證失敗. 相應(yīng)中斷. 等符欠。
6. 通過一些第三方模塊的特點(diǎn)判斷
Django之所以好用嫡霞,因?yàn)槠浯a耦合性很低,所以有豐富的第三方模塊可以直接使用背亥。通過這些模塊的特點(diǎn)也能判斷目標(biāo)網(wǎng)站是否是Django秒际。
常用的第三方模塊有django-rest-framework悬赏、django-debug-toolbar狡汉、django-bootstrap3、django-filter闽颇、django-cron盾戴、django-allauth、django-simple-captcha等兵多。
比如尖啡,django-rest-framework會有一個調(diào)試頁面:
再比如,django-simple-captcha生成的驗(yàn)證碼會包含一個名字是 captcha_0 剩膘,值為40位hex的隱藏輸入框衅斩。
這些第三方庫的特點(diǎn)也可以輔助你判斷,就是需要收集與細(xì)心觀察了怠褐。
7. 分析靜態(tài)文件
有的網(wǎng)站可能修改了Django的后臺地址畏梆,但Django后臺所使用的靜態(tài)文件地址通常沒有修改,也較難修改奈懒。
訪問這些靜態(tài)文件地址奠涌,看看內(nèi)容是否是Django的這一套,就可以確定目標(biāo)是否為Django磷杏,如 :http://0.0.0.0:8001/static/admin/css/dashboard.css
但這個方法有個局限溜畅,如果目標(biāo)網(wǎng)站沒有使用Django自帶的django-admin(未將其包含在settings.py的INSTALLED_APPS中),就沒有這個靜態(tài)文件了极祸。