當在網絡上傳輸一些私人,敏感信息時,應該採用加密的手段來保證這些信息在傳輸的過程當中不被偵測到。Https協議正是這種實現機制。php
Https是一種普遍使用的安全通訊協議,下面是維基百科對它的定義:html
超文本傳輸安全協議(縮寫:HTTPS,英語:Hypertext Transfer Protocol Secure)是超文本傳輸協議和SSL/TLS的組合,用以提供加密通信及對網絡服務器身份的鑑定。HTTPS鏈接常常被用於萬維網上的交易支付和企業信息系統中敏感信息的傳輸。HTTPS不該與在RFC 2660中定義的安全超文本傳輸協議(S-HTTP)相混。- Wikipeida http://zh.wikipedia.org/zh/HTTPS前端
使用http協議來傳輸數據時不安全的,由於任何人均可以截獲你的信息,獲悉你傳送的內容。做爲一名測試工程師,你能夠扮演一下「中間人攻擊」(man in the middle attack)web
檢查你的鏈接是否安全最簡單的方法就是看看瀏覽器的地址欄,看有沒有https。有的瀏覽器還會顯示一個鎖來暗示你的鏈接是安全的。現在有愈來愈多的工具能夠檢測你的鏈接是否安全。有一些瀏覽器插件能夠強制你以SSL加密你的鏈接。正則表達式
若是一個站點不是加密的,那麼你就能夠經過在web客戶端和服務器端放置web代理(proxy)來截獲之間的信息。chrome
你可使用一些工具,如Burpsuite, Charles Proxy或則Fiddler來截獲信息,不僅僅瀏覽器發送給服務器間的信息能夠被截獲,服務器返回的信息一樣能夠被截獲。api
一旦你經過代理工具截獲了信息,你就能夠嘗試着作一些測試,攻擊。瀏覽器
你能夠看看這些截獲的信息中是否有一些我的信息,這些蛛絲馬跡的信息能夠被用做社會工程學的攻擊上來哦。安全
若是你把截獲的信息刪除了,看看會發生什麼?會有信息丟失嗎,狀態丟失,客戶端crash了沒,服務器端呢,仍是已經作了處理,什麼都沒發生服務器
修改你截獲信息中的值,而後將它發送給服務器。有不少例子,購買商品的價格是放在未加密的信息中的,你能夠很簡單就將商品的價格調整爲你想要的價格了。
一樣,你能夠作一樣相似的攻擊,來篡改服務器發送給客戶端的信息。利用你截獲信息,還能夠作一些其餘攻擊。
攔截信息不僅僅是安全問題。有不少例子,在不少web系統中發生過由於信息丟失而致使的悲劇。在利用代理服務器截獲信息後,能夠嘗試各類各樣的測試,你會發現哪些是有效的,能發現問題,有一些測試則不行,這就是你的經驗。,在作這些測試的過程當中,你還又會有一些新的點子。
在不少測試環境,是沒有配置https安全證書的,在線下仍是測試一下確保不會有https或則ssl的bug。
Good security for web checklist – http://www.techrepublic.com/blog/security/ensure-basic-web-site-security-with-this-checklist/424
Differences between http and https - http://www.virtu-software.com/ask-doug/QandA.asp?q=7
Another differences post - http://www.wisegeek.com/what-is-the-difference-between-http-and-https.htm
Burpsuite - http://portswigger.net/burp/
做爲一名測試工程師,在測試一個站點時,關注屏幕背後發生了什麼,對咱們會更有幫助。
在訪問一個站點,與之交互的過程當中,會有一些前端(瀏覽器端)和後臺服務邏輯在處理這交互過程。對於一名測試工程師而言,在前端和後臺服務器之間流動的信息,以及處理邏輯,就是你的重點。
也許你會使用CSS樣式來進行網頁風格的設計,點擊頁面上的一個連接或作一個操做,會發送一個請求到服務器端,或前端JS腳本就幫你處理掉了(好比計算兩個數的和)。換句話說,用戶須要他在也頁面上作了一個操做,他不須要關心這個操做是如何實現的,這背後發生了什麼,但做爲一名測試同窗,你應該關注這些。
下面來看一個例子,一個簡單的「登入」會映射到那些動做呢?
經過這個簡單的例子說明,即使是一個簡單的「登入」操做,其也會產生多條信息,並涉及多處的邏輯。若是是更復雜的例子,就會有前端邏輯校驗,或則服務器端會調用別處的web service服務。
做爲一個測試同窗,你就要探究屏幕背後發生了什麼?你的應用是如何工做的?它會發送哪些信息,接受哪些信息。理清楚這些信息,對你瞭解整個系統將頗有幫助。你能夠記下一些概要信息:能夠包括一些測試思路,系統這麼處理的存在的問題,好處等。
還有一些有意思的:
大多說Web Tester都用過這三個工具(我就是用這三種工具的,也許還有其餘一些功能強大的工具)
Charles Proxy
Charles Proxy是個很棒的工具,可用戶嗅探web 請求(監控,攔截web 請求)。你能夠驗證截獲的內容,看是否是和定義的一致,你也能夠篡改請求,發送一個非法的請求到服務器。
Charles Proxy最有用的一個功能就是,限制(throttle)瀏覽器和服務器之間的網絡帶寬。後續章節還會講到這個功能。
Fiddler
Fiddler名字有點怪怪的,但這是測試同窗的必備殺器哦。某種程度上講,它的功能和Charles Proxy有點相似,但它提供了更豐富的界面,並能夠經過命令行操做。
Firebug
我一直使用Firefox來作web測試,由於Firefox有不少插件。其中,Firebug是平常工做離不開的一個擴展。
我主要用到Firebug的這些功能:
還有一個插件叫「Fire Cookie」,它能夠擴展Firebug的功能,使之能夠管理系統中的Cookies
Charles Proxy - http://www.charlesproxy.com/
Fiddler - http://fiddler2.com/fiddler2/
Firebug - http://getfirebug.com/
Firecookie - https://addons.mozilla.org/en-US/firefox/addon/firecookie/
web安全是一個熱門話題。的確,安全無小事,用戶的數據和以及作了在你的站點上所作操做,都應該是安全的。
我認爲,全部的測試同窗都應該掌握一些基本的安全測試技能。至少,應該都知道OWASP上面列舉出來的Top10安全漏洞。
有一些測試工具和測試技巧能夠幫着發現那些明顯的安全漏洞。對於核心系統,我建議請專業的公司來作專門的「滲透測試」。
對你的應用作安全測試,最簡單的辦法就是下載一個掃描工具,如Burpsuite。也有一些其餘工具,但Burpsuite是市面上最合適的工具,WebScarab也不錯啦。
Bursuite的免費版本已經提供了作安全測試所須要的大部分功能。Burpsuite中的「Scanner」功能只對付費版可用,若是你須要平常進行安全性測試,我建議你買個付費版。
Scanner能夠自動掃描你的應用,尋找漏洞。真正強大的在於,它知道到哪些地方存在漏洞,傳遞什麼樣的數據,已經發現了漏洞後,如何處理。
安全測試這個話題太大了,能夠找本專門的書翻一番,列出常見的風險點,如何嗅探出漏洞進行深度攻擊。這是個很大的topic,也有不少這方面的資料。
若是你產品在Salesforece APP,你將獲得Burpsuite的免費license.
Burpsuite - http://portswigger.net/burp/
Web Scarab - https://www.owasp.org/index.php/WebScarab_Getting_Started
Web Hackers book - http://www.amazon.co.uk/Web-Application-Hackers-Handbook-
Discovering/dp/0470170778
OWASP Top Ten - https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
Plynt Security Testing Experts - http://www.plynt.com/
Salesforce Burpsuite for App Exchange Partners - http://security.force.com/webappscanner
Start with the treat profile - http://www.securityalliance.co.uk/blog/bid/40335/Web-Application-Security-Testing-Start-with-the-Threat-Profile
Firefox add-ons (search for 「security」)- https://addons.mozilla.org/en-US/firefox/
市面上大部分瀏覽器均可以經過add-ons來添加額外的功能(有時候稱爲擴展,插件)。這些擴展能夠幫助測試同窗深刻了解你所測的系統,這裏僅列舉我所熟知的一些。
Selenium IDE http://seleniumhq.org/projects/ide/
Selenium已經成爲了行業標準,這裏是IDE版本。
IE Tab https://addons.mozilla.org/en-US/firefox/addon/1419
實現Firefox的分頁調IE的引擎渲染頁面
Firesizer https://addons.mozilla.org/en-US/firefox/addon/5792
可調整窗口大小至你想要的瀏覽器尺寸
Fire cookie https://addons.mozilla.org/en-US/firefox/addon/6683
查看和管理Cookies
Delicious https://addons.mozilla.org/en-US/firefox/addon/3615
書籤管理服務,不會遺漏你感興趣的站點,並分享到你的社區裏
Clear Cache https://addons.mozilla.org/en-US/firefox/addon/1801
一鍵Cache清理
Copy Plain Text https://addons.mozilla.org/en-US/firefox/addon/134
頁面內容以純文本格式保存
Fiddler Hook http://www.fiddler2.com/fiddler2/addons/fiddlerhook/
Fiddler 插件
Download Status https://addons.mozilla.org/en-US/firefox/addon/26
在瀏覽器工具欄顯示你的下載狀態,方便的訪問你所下載的東西
Xmarks https://addons.mozilla.org/en-US/firefox/addon/2410
保存你的書籤,並能夠在不一樣機器間同步。
W3C Page Validator https://addons.mozilla.org/en-US/firefox/addon/2250
檢查頁面是否符合 W3C 標準
Pencil https://addons.mozilla.org/en-US/firefox/addon/8487
web頁面原型設計工具,不少人吐血推薦
SQL Injection https://addons.mozilla.org/en-US/firefox/addon/6727
你懂的
Quick Restart https://addons.mozilla.org/en-US/firefox/addon/3559
重啓Firefox ,並從新打開全部分頁
Firebug https://addons.mozilla.org/en-US/firefox/addon/1843
離開了它,你就別測web了
Regular Expressions Tester https://addons.mozilla.org/en-US/firefox/addon/2077
正則表達式測試
Quick Locale Switcher https://addons.mozilla.org/en-US/firefox/addon/1333
快速切換瀏覽器的locales
Http Fox https://addons.mozilla.org/en-US/firefox/addon/6647
Http流量分析工具
TAW3 https://addons.mozilla.org/en-US/firefox/addon/1158?src=api
可訪問性測試工具
Firefox Accessibility Tools https://addons.mozilla.org/en-US/firefox/addon/5809?src=api
可訪問性測試工具
知道這些工具僅僅是一個開始,你能夠想象這些工具將對你的工做多有幫助。這些擴展能夠提升你的工做效率,使得以前無法作的測試變得可能,一些繁瑣的工做也能夠交個這些工具來。
上面列出的是一些firefox的擴展工具,一樣chrome也會有本身的擴展。
打開Firefox > Tools > Add-ons > Extensions,查詢下載擴展插件
你知道如何使Firefox更快的加載嗎?
設值爲:0(這個值就是告訴Firefox,當接受到服務器返回時,等待0s,載入頁面)
Main extensions website for Firefox - https://addons.mozilla.org/en-US/firefox/extensions/
Chrome extensions - https://chrome.google.com/webstore/category/extensions
Opera extensions - https://addons.opera.com/en/addons/extensions/
Safari extensions - http://extensions.apple.com/
Cool hacks to Firefox like making it quicker - http://www.lifehack.org/articles/technology/15-coolest-firefoxtricks-ever.html
網站的安全性不只僅是考慮跨站攻擊,SQL注入,中間人攻擊這些,有些時候僅僅是點擊「返回上一頁」箭頭,查看以前一個瀏覽者的訪問信息 ,這也是一個看似簡單,但也十分有效的安全缺口。
舉個例子,你在一個網路咖啡屋,登入了你的網上銀行。接着退出了網銀,但瀏覽器窗口沒有關閉,而後離開了咖啡館。那麼徹底有可能下一個使用電腦的人,只需點擊一下「後退一步」按鈕,就能夠看到你銀行帳戶信息。
請相信,這的確發生過。
簡單的測試方法就是經過身份驗證,登入你的應用。而後,退出,接着點擊瀏覽器的「返回上一頁」按鈕,看看會發生什麼?
瀏覽器通常均可以一會兒向上返回好幾頁,網上返回三,或四頁,看看你能看到什麼信息?
讓咱們來看看這些bug會引發什麼問題?
把鼠標放在後退按鈕上,而後按着不動,就會列出以前訪問網頁的列表
Stack Overflow question on disabling back capability (which you cannot by the way) -
http://stackoverflow.com/questions/7816195/how-to-disable-back-button-in-browser-when-user-logout-inclassic-asp
IE security problem with the Back Button.
http://www.wired.com/science/discoveries/news/2002/04/51899?currentPage=all
一個好的測試,經過修改你所登入站點的URL,看你是否能夠訪問到本不屬於你的內容,來發現隱藏的身份驗證類的bugs。
你也能夠嘗試經過修改URL,看可否修改發送或接受到的數據。
Bypass Authentication 繞過身份驗證
首先,你要弄明白,你的站點是如何組成的,由哪一些頁面能夠跳轉至其餘哪些頁面?
接着,經過概要圖來理清楚你的想法,想一想如未嘗試着欺騙你的應用
登入你的應用,作一些操做,例如,提交一些信息,查看一些敏感信息。把每一個頁面的URL記錄到你的筆記本上。
一旦創建了概要圖,並列出來URL, 就退出去。如今session鏈接應該已經斷了,清空cache,刪除cookies,並從新打開瀏覽器,確保你的環境是乾淨的。
如今,將你剛保存的URL複製到瀏覽器地址欄,回車,看會發生什麼?由於你以前的Session已經斷了,因此你不該該可以訪問那些須要身份驗證的網頁。
你也能夠以其餘人的身份登入,而後輸入剛保存下來的URL,有一些URL保存着帳戶、我的特定信心,因此須要身份驗證才能夠訪問,看看若是以其餘人的身份驗證的,會發生什麼
你可以看到其餘人的帳戶嗎?
是否被要求從新身份驗證呢?
能看出這個帳戶是誰的嗎?
Change the URL 修改URL
另外一個經常使用的欺騙手段就是,看看URL裏面是否有一些能夠改變的值?
好比,
www.thisisanexample.com/banktransfer/rate=12.33
一個很明顯的測試點就是,修改rate的值,看看會發生什麼
若是將rate設爲負數呢?若是去掉rate的值呢?
在寫這本書的時候,在新聞中看到,有一家大型全球銀行的網站,就有一個相似的URL , 展現給登入用戶的URL包含一個帳戶id。經過修改id爲另外一個用戶的,就能夠訪問這個用戶的銀行帳戶了。這是一個很簡單的測試,但經常被忽略。這是一個有數百萬用戶的大型銀行的線上bug,但它的確發生了。
上面提到的兩個測試點,值得深刻的作探索式測試。
挖掘信息,記錄下來發生了什麼,尋找線索,和潛在的安全缺口,還有就是,要學習一下潛在的URL 劫持技術。
使用selenium這樣的錄製工具,它會在腳本里記錄下來每個訪問的URL。這是一個很好的辦法來記錄下站點的全部URL。
Selenium - http://seleniumhq.org/
不少人,在訪問網頁,在網頁操做時,是不使用鼠標的。
若是頁面的Tab順序設置是沒有邏輯的,這將使得使用鍵盤訪問網頁變得很困難,沒有邏輯性,有時候甚至不可能。
測試Tab順序,看起來很簡單,但也要考慮頁面的渲染,刷新,隱藏所選擇的內容時所使用的技術,這些都將影響頁面總體的Tab順序。
舉例,一個Form表單裏面包含10個問題,若是tab順序是設置合理的,那麼你經過按tab鍵,就能夠以合理的順序遍歷這十個字段(從左到右,從上至下的順序)
同時,這個表單還有一個功能,若是用戶第二個問題選擇了true ,那麼就會展現出第十一個,第十二個問題。這時候,就須要確保第十一,十二個問題也在tab順序中,不少狀況下,這兩個字段就被忽略掉了。
按着shift+tab鍵,作反向的tab順序,反向tab和正向的tab同樣重要。
Tabbing in HTML guidelines - http://www.w3.org/TR/html4/interact/forms.html#h-17.11.1
Web Aim guide to changing tab orders - http://webaim.org/techniques/keyboard/tabindex