《白帽子講WEB安全》學習筆記之第12章WEB框架安全
第12章 WEB框架安全
12.1 MVC框架安全
在Spring框架中可以使用spring security來增加系統的安全性。
12.2 模板引擎與XSS防禦
12.3 WEB框架與CSRF防禦
在MVC中防禦CSRF:
q 在Session中繫結token。如果不能儲存到資料庫中的Session,則使用Cookie.
q 在form表單中自動填寫token欄位
q 在Ajax請求中封裝token。
q 在伺服器端對比POST提交的token與Session繫結的Tiken是否一致。
q 儘量使用POST
12.4 Http Headers管理
在MVC框架中對響應的HTTP頭做好防禦和返回
因此對抗CRLF的方案只需要在“value”中編碼所有的
即可。這裡沒有提到在“key”中編碼
,是因為讓使用者能夠控制“key”是極其危險的事情,在任何情況下都不應該使其發生。
對於框架來說,管理好跳轉目的地址是很有必要的。一般來說,可以在兩個地方做這件事情:
q 如果Web框架提供統一的跳轉函式,則可以在跳轉函式內部實現一個白名單,指定跳轉地址只能在白名單中;
q 另一種解決方式是控制HTTP的Location欄位,限制Location的值只能是哪些地址,也能起到同樣的效果,其本質還是白名單。
有很多與安全相關的Headers,也可以統一在Web框架中配置。比如用來對抗ClickJacking的X-Frame-Options,需要在頁面的HTTP Response中新增:
X-Frame-Options: SAMEORIGIN
Web框架可以封裝此功能,並提供頁面配置。該HTTP頭有三個可選的值:SAMEORIGIN、DENY、ALLOW-FROM origin,適用於各種不同的場景。
並不是所有的Web伺服器、Web容器、指令碼語言提供的API都支援設定HttpOnly Cookie,所以很多時候需要由框架實現一個功能:對所有的Cookie預設新增HttpOnly,不需要此功能的Cookie則單獨在配置檔案中列出。
這將是非常有用的一項安全措施,在框架中實現的好處就是不用擔心會有遺漏。就HttpOnly Cookie來說,它要求在所有伺服器端設定該Cookie的地方都必須加上,這可能意味著很多不同的業務和頁面,只要一個地方有遺漏,就會成為短板。當網站的業務複雜時,登入入口可能就有數十個,兼顧所有Set-Cookie頁面會非常麻煩,因此在框架中解決將成為最好的方案。
一般來說,框架會提供一個統一的設定Cookie函式,HttpOnly的功能可以在此函式中實現;如果沒有這樣的函式,則需要統一在HTTP返回頭中配置實現。
12.5 資料持久層與SQL注入
對於ibaits引數引用可以使用#和$兩種寫法,其中#寫法會採用預編譯方式,將轉義交給了資料庫,不會出現注入問題;如果採用$寫法,則相當於拼接字串,會出現注入問題。
例如,如果屬性值為“` or`1`=`1 ”,採用#寫法沒有問題,採用$寫法就會有問題。
q 對於like語句,難免要使用$寫法:
q 對於Oracle可以通過`%`||`#param#`||`%`避免;
q 對於MySQL可以通過CONCAT(`%`,#param#,`%`)避免;
q MSSQL中通過`%`+#param#+`%。
mysql: select * from t_user where name like concat(`%`,#name #,`%`)
oracle: select * from t_user where name like `%`||#name #||`%`
SQL Server:select * from t_user where name like `%`+#name #+`%
注:儘量避免使用如下程式碼:
1
2
3
4
|
<![CDATA[ INSERTINTO `tab_user_one`
values( ) ]]>
|
12.6 還能想到什麼
在設計Web框架安全解決方案時,還需要儲存好安全檢查的日誌。在設計安全邏輯時也需要考慮到日誌的記錄,比如發生XSS攻擊時,可以記錄下攻擊者的IP、時間、UserAgent、目標URL、使用者名稱等資訊。這些日誌,對於後期建立攻擊事件分析、入侵分析都是有積極意義的。當然,開啟日誌也會造成一定的效能損失,因此在設計時,需要考慮日誌記錄行為的頻繁程度,並儘可能避免誤報。
在設計Web框架安全時,還需要與時俱進。當新的威脅出現時,應當及時完成對應的防禦方案,如此一個Web框架才具有生命力。而一些0day漏洞,也有可能通過“虛擬補丁“的方式在框架層面解決,因為Web框架就像是一層外衣,為Web應用提供了足夠的保護和控制力。
12.7 Web框架自身安全
Web框架本身也可能會出現漏洞,只要是程式,就可能出現bug。但是開發框架由於其本身的特殊性,一般網站出於穩定的考慮不會對這個基礎設施頻繁升級,因此開發框架的漏洞可能不會得到及時的修補,但由此引發的後果卻會很嚴重。
相關文章
- 《白帽子講WEB安全》學習筆記之第18章安全運營Web筆記
- 《白帽子講WEB安全》學習筆記之第7章注入攻擊Web筆記
- 讀《白帽子講web安全》 ——筆記Web筆記
- 《白帽子講WEB安全》學習筆記之第11章加密演算法與隨機數Web筆記加密演算法隨機
- 《白帽子講web安全》讀書筆記Web筆記
- 《白帽子講WEB安全》學習筆記之第13章應用層拒絕服務攻擊Web筆記
- 讀了《白帽子講 Web 安全》Web
- 《白帽子講Web安全》 讀書Web
- Web安全學習筆記之更新kali國內源Web筆記
- 《Web安全之機器學習入門》一第1章通向智慧安全的旅程Web機器學習
- Web之http學習筆記WebHTTP筆記
- Web框架自身安全Web框架
- 【Web】Web 階段學習筆記Web筆記
- SSM框架學習筆記_第1章_SpringIOC概述SSM框架筆記Spring
- web安全的學習路線Web
- Web基礎學習筆記Web筆記
- Web Bundles 學習筆記Web筆記
- CISSP學習筆記之安全管理基礎筆記
- 飛機的 PHP 學習筆記之 Web 篇PHP筆記Web
- XML安全之Web ServicesXMLWeb
- Web 安全之 XSSWeb
- 第15.16.17章學習筆記筆記
- 【Web技術學習】PHP學習筆記WebPHP筆記
- 有關Web 安全學習的片段記錄(不定時更新)Web
- 如何提高網路安全技術?如何更好學習web安全Web
- 逆向與安全學習筆記筆記
- 飛機的 PHP 學習筆記之安全篇PHP筆記
- web基礎學習筆記(二十)之jquery動畫操作Web筆記jQuery動畫
- Web Service學習筆記之----JAX-RPC (轉)Web筆記RPC
- JAVA學習筆記—JAVA WEB(二)JAVA WEB核心(下)Java筆記Web
- 現在學習網路安全來得及嗎?web安全入門學習Web
- 大專學歷可以學網路安全嗎?學習web安全入門Web
- Web前端安全之安全編碼原則Web前端
- Web 安全之內容安全策略 (CSP)Web
- web安全Web
- Web 安全之混合內容Web
- Web安全漏洞之CSRFWeb
- [深入學習Web安全](5)詳解MySQL注射WebMySql