電腦書,題材如其名,出版社歐萊禮。
這本的主題是教你如何用各種免費軟體搞掛....噢不,測試Web應用程式。要注意的是,這本主要採用的是測試員的角度,也就是說「你沒有完整的Server端程式碼也沒有相關知識,也許你可以跟工程師要,但是不太可能太頻繁或詳細」的立場。如果你自己就是Web應用程式的撰寫者,會免去不少麻煩,但其中幾個也會不那麼需要做。當然,相關知識先有總是好的。
內容上,書中詳細的提到了各種基礎動作跟比較具體的攻擊法。更詳細的深入的話,書中有介紹網站跟書籍。
如果對Web安全議題沒有多少了解的話,這本相信是很不錯的入門書籍。
2009年5月31日 星期日
2009年5月21日 星期四
Web Security測試用工具
以下是從「Web安全測試錦囊妙計」第二章擷取出來的(歐萊禮出版,原書名Web Security Testing Cookbook)。目的是為了我不用每次都打網址...XD
下面列表我會寫上必要的註解,不過還是建議需要的話自己去看原書
工具列表:
下面列表我會寫上必要的註解,不過還是建議需要的話自己去看原書
工具列表:
- Firefox
- Fx Extension:
- View Source Chart (不適用Fx3,但有適用的實驗版本)
- Firebug
- Tamper Data
- Edit Cookies (適用於Fx3的是新版:Add N Edit Cookies)
- User Agent Switcher (不知為何裝起來沒作用...)
- SwitchProxy
- WebScarab (需要Java Runtime)
- Perl (Windows: ActivePerl)
- CAL9000
注意:原作者有警告,不要把這東西放在網路Server上,請在本機端環境操作他 - ViewState Decoder
- cURL
- Pronzilla (這是一組而非一個工具)
注意:這些是為了情色目的開發的工具,但只要你不針對該方向使用,工具本身事「純真無邪」的(書上就這麼寫XD)。 - RefSpoof: 修改HTTP Referer
- Digger: 目錄橫跨(Directory traversal)工具
- Spiderzilla: Website Spider
- Increment & Decrement: 竄改URL參數
- Cygwin (建議加裝Perl)
- Nikto 2 (需要Perl & Cygwin, 需要LibWhisker)
- Burp Suite (非完全免費,但免費的部份就有用)
- Apache HTTP Server
2009年5月12日 星期二
以索引的方式取用Smarty的config變數
我遇到的狀況是這樣。假設我在Smarty的config檔裡面寫了這樣的內容:
問題來了,如果我現在要依照PHP檔輸入的內容動態的取用上述內容的話呢?
比如說,透過PHP檔內的動作,現在template裡有個變數$para,內容是"level1"。
我想用它來取得config檔內同名的變數的數值。
很直覺的想法會是
Smarty的config檔的變數(已讀入的)也會以$smarty->config->level1之類的方式儲存,
不過當然的,我也不能寫成$smarty->config->$para。
另一種想法是config裡面能不能直接寫陣列?
我自己嘗試不行,我也沒看到哪個範例可以的。
最後達成的作法是藉由template內嵌php程式碼。
將config的內容重組成template variables的陣列,傳入template中。
雖然是相當拐彎抹角的作法,不過會比在template裡面寫一堆重複的程式碼好多了。
level1 = 等級一一般來說在template裡面,我要呼叫上述內容的寫法是:
level2 = 等級二
level3 = 等級三
{#level1#}
問題來了,如果我現在要依照PHP檔輸入的內容動態的取用上述內容的話呢?
比如說,透過PHP檔內的動作,現在template裡有個變數$para,內容是"level1"。
我想用它來取得config檔內同名的變數的數值。
很直覺的想法會是
{#$para#}之類的對吧?不過很可惜,Smarty不支援這種語法。
Smarty的config檔的變數(已讀入的)也會以$smarty->config->level1之類的方式儲存,
不過當然的,我也不能寫成$smarty->config->$para。
另一種想法是config裡面能不能直接寫陣列?
我自己嘗試不行,我也沒看到哪個範例可以的。
最後達成的作法是藉由template內嵌php程式碼。
將config的內容重組成template variables的陣列,傳入template中。
$ar = array('level1', 'level2', 'level3');然後在template裡面使用。
foreach($ar as $v)
{
$ar2[$v] = $this->get_config_vars($v);
}
$this->assign('ar', $ar2);
$ar[$para]
雖然是相當拐彎抹角的作法,不過會比在template裡面寫一堆重複的程式碼好多了。
2009年5月5日 星期二
如何建立單機性質的SVN版本控管
單機性質SVN
版本控管以及備份的重要性應該不用多講了,而SVN有多麼優秀也不用多提。
只是一般聽到的SVN都是需要一個網路上的SVN Server,
那自己寫點小東西,沒有SVN Server又想要版本控管的話該怎麼辦呢?
這就是這篇文章的主題。建立一個個人的SVN版本控管。
基本上是參考這篇的,不過我會用中文口語的講出來。
步驟:
以隨身碟做為存放Repository的裝置
上述作法我遇到的主要問題之一是,如果你在兩個以上的地方都有電腦而且都會寫程式,使用頻率還差不多怎麼辦?分別建立單機SVN是個辦法,但是版本控管不能統一。
另一種作法是,同樣分別建立單機SVN,但是建立在同一個隨身碟上。兩台(或以上)的電腦對同一個隨身碟做checkout跟commit,所以版本控管的來源只有一個。比較有問題的是隨身碟的代號可能每次放入時不一樣(已經插了其他裝置導致代號改變...之類的),每次都來一次Relocate又太麻煩了。我的作法是將隨身碟的代號改為一個較少用的代號,這樣就比較不容易被其他會插拔的裝置影響到。(更改代號可以從我的電腦->管理->磁碟管理裡面著手)
版本控管以及備份的重要性應該不用多講了,而SVN有多麼優秀也不用多提。
只是一般聽到的SVN都是需要一個網路上的SVN Server,
那自己寫點小東西,沒有SVN Server又想要版本控管的話該怎麼辦呢?
這就是這篇文章的主題。建立一個個人的SVN版本控管。
基本上是參考這篇的,不過我會用中文口語的講出來。
步驟:
- 下載TortoiseSVN最新版。我是用Windows版
- 選擇你要拿來存放版本控管的內容的目錄(最好是空的),
檔案管理員右鍵->TortoiseSVN->Create Repository here... - 接下來就可以使用Repository Browser連到該目錄了,
位址類似這樣:file:///Q:/THBRsvntest - 在把該目錄作最初的整理後(比如trunk/branches/tags三分法),將初始的程式檔案import進來。
在你要載入的資料夾上,檔案管理員右鍵->TortoiseSVN->Import...。
注意該資料夾不會一併import,只有資料夾的內容會。
還有,被你指定import的資料夾並不會因此就有版本控管。要再進行checkout才行 - 進入Repository Browser,對你要checkout的資料夾右鍵->Checkout...。
注意一樣,只有資料夾內的內容會被checkout。 - checkout出來的資料已經有了版本控管了。剩下的跟一般TortoiseSVN用法相同。
以隨身碟做為存放Repository的裝置
上述作法我遇到的主要問題之一是,如果你在兩個以上的地方都有電腦而且都會寫程式,使用頻率還差不多怎麼辦?分別建立單機SVN是個辦法,但是版本控管不能統一。
另一種作法是,同樣分別建立單機SVN,但是建立在同一個隨身碟上。兩台(或以上)的電腦對同一個隨身碟做checkout跟commit,所以版本控管的來源只有一個。比較有問題的是隨身碟的代號可能每次放入時不一樣(已經插了其他裝置導致代號改變...之類的),每次都來一次Relocate又太麻煩了。我的作法是將隨身碟的代號改為一個較少用的代號,這樣就比較不容易被其他會插拔的裝置影響到。(更改代號可以從我的電腦->管理->磁碟管理裡面著手)
訂閱:
意見 (Atom)