在推上看到有人推薦了這本書,就買了一本看看,作為一個對於對Web安全沒大有概念的人最大的收獲就是知道了好多的攻擊方式,總體來說這本書講的比較通俗,通讀完這本書后大概也能知道一些常見的攻擊方式以及一些避免方式,對做Web開發的程序員來說有一定的收獲,概括來說適合對Web安全了解不多的人入門。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 安全三要素:機密性(Confidentiality),完整性(Intergrity), 可用性(Availablity)。
- 同源策略(Same Origin Policy):
影響源的因素有host、子域名、端口、協議等。
<script><img><iframe><link>可以跨域加載資源不受同源策略的限制,這些帶src屬性的標簽每次加載時實際上是由瀏覽器發起了一次get請求。
DOM、Cookie、XMLHttpRequest、第三方插件受同源策略的限制,但可以通過crossdomain.xml文件限制跨域的白名單。 - XSS:Cross Site Script 跨站腳本攻擊 是為了和Cascading Style Sheet區別,所以改叫XSS.
- location.hash第一個字符是#,並且內容不會被發送到服務器端。
- <base>是定義頁面上所有的使用“相對路徑”標簽的hosting地址,<base>不只可以放在<head>內,也可以放在頁面的任何地方。
- window對象是瀏覽器的窗體,而非document對象,所以不受同源策略的限制
- 對於一些重要的,又不想讓JS讀取的cookie,在設置cookie時設置HttpOnly屬性為ture,這樣的話JS就不知道有這個cookie了,可以避免cookie劫持。
- 輸入檢查可以避免一些XSS,SQl Injection,通用的做法是在前台用JS檢查一下以避免大多數的錯誤,然后在后台做同樣的檢查,以避免前台JS被繞過的情況。
- Anti-Samy是一個很好的XSSFilter,有Java/.NET實現。
- CSRF Cross Site Request Forgery.跨站點請求偽造。
- 瀏覽器所持有的Cookie分為Session Cookie和Third-party Cookie。前一種是臨時Cookie,后一種是本地Cookie.
- 在瀏覽器上存儲數據以前主要有Cookie, FlashShardObject,IE UserData.HTML5加入了WebStorage。WebStorage分為SessionStorage和LocalStorage. Window.sessionStorage.setItem(key, value)
- 要解決基於字符集的注入需要統一數據庫、操作系統、Web應用所使用的字符集,可以都統一為UTF-8.
- 使用預編譯語句和存儲過程都可以一定程序上避免Sql Injection.
- 避免文件上傳漏洞的方式:
文件上傳的目錄設為不可執行。
用白名單的方式判斷文件類型。
單獨設置文件服務器的域名,不同源的話很多攻擊會失效。 - Authentication(認證)是為了認出用戶是誰,而Authorization(授權)是為了決定用戶能夠做什么。
- Distributed Denial of Service 分布式拒絕服務。
