歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

Django 開發中你不可不知的 7 個 Web 安全頭

來源:本站整理 作者:佚名 時間:2019-10-06 TAG: 我要投稿

Web 是一個不斷發展的平臺,有很多向后兼容的問題。 新的 web 安全實踐通常來自于對存在缺陷的舊功能的認識。 與其通過改變這些功能來破壞舊網站,還不如選擇加入一些更安全的設置。 你可以通過設置 HTTP 頭來實現這一點。
Securityheaders.com 是一個由安全顧問 Scott Helme 運行的工具,它可以在這些安全頭上創建一個報告。 它為任何 URL 提供從 F 到 A+ 的評分,這是一種度量網站安全狀況的簡單方法。 但是,像任何自動化報告一樣,它需要人工解釋報告的上下文。
(我也推薦 Mozilla Observatory 安全掃描器,但我不會在這里使用它,因為它的功能遠遠超過了安全頭。)
舉個例子,Yahoo在 securityheaders.com 上的得分是 A+ :
 

同時(在寫這篇文章的時候) Google 的得分是 C:
 

本文是一個關于如何配置一個典型的 Django web 應用程序來獲得 A+ 得分的指南。 你可以擊敗谷歌,保護你的用戶,給你的老板、客戶或伙伴留下深刻印象!
我們將查看你需要設置的6個 HTTP 安全頭信息來獲得 A+ (在撰寫本文時)分數。 另外,我們還會提供一個額外的實驗性的第7個安全頭…
1. X-XSS-Protection
跨站點腳本攻擊或 XSS 是一種攻擊者可以用來將他們自己的代碼注入到你的網站的跨站腳本。 這可能會做一些惡意的事情,比如添加虛假內容或者監視你的用戶竊取他們的密碼。
由于 XSS 是網站上常見的一種缺陷,瀏覽器在某些情況下添加了檢測和防止這種漏洞攻擊的功能,并捆綁在"XSS Auditors"中。 默認情況下,這些安全功能都是啟用的,所以看起來像 XSS 攻擊的一些腳本會被阻止,但是頁面會繼續工作。
將X-XSS-Protection HTTP 頭設置為使用"塊模式"以提供額外的安全性。 這告訴瀏覽器完全屏蔽被檢測到的 XSS 攻擊的頁面,以防它們包含其他不好的東西。 例如,請參見 Scott Helme 的演示,其中 HTML 發送了一個 GET 參數并出現在被阻塞的頁面上。
這提供了一點額外的保護,添加這個HTTP頭是一個好主意。 即使你的網站可以防御 XSS 攻擊,如果它觸發瀏覽器的 XSS auditor,攻擊行為會被重構,以避免繼續利用漏洞。
Django 內置了這個HTTP頭,并且很容易激活。如果你沒有設置該HTTP頭,那么你在運行 manage.py check –deploy 時,會看到 security.W007警告。
啟用說明:
·你需要在你的MIDDLEWARE中設置django.middleware.security.SecurityMiddleware ,值設置的越高越好。 在默認情況下Django已經為你完成了startproject模板
·在你的設置文件中添加 SECURE_BROWSER_XSS_FILTER = True
請參閱 Django 文檔中的更多內容,例如關于媒體文件的說明。
2. Strict-Transport-Security
HTTP Strict Transport Security 或 HSTS,是一種告訴瀏覽器只能通過 HTTPS 加載你的網站的 HTTP嚴格傳輸安全方案。 一旦瀏覽器在一個網站上看到了標題,它就只會向該網站發出 HTTPS 請求。 該HTTP頭包含一個以秒為單位的最大使用時間,這限制了瀏覽器記憶此操作的時間。 這可以防止中間人攻擊或者 AITM 攔截 HTTP 請求并將惡意的內容注入你的網頁中。
一般來說建議為Strict-Transport-Security HTTP頭設置一個 max-age 值。 除此之外,你還可以設置下面幾個標志:
·includeSubDomains 包括你的域名的所有子域名
·preload  告訴瀏覽器將你的域名存儲在已知的只有 strict 域的數據庫中。 它只能設置在頂級域名上,如example.com。在 HSTS 預加載的域名上打開 URL 的瀏覽器將 永遠不能夠使AITM 攻擊支持 HTTP 請求
·一旦設置了這個標志,你就可以通過谷歌的預裝載服務將你的域名提交到所有瀏覽器。在接受你的域名之后,每個瀏覽器的下一個版本將包括你的域名。
最近有一些 TLD,如.app 實現了自身的預加載,這意味著這些 TLD 只支持 HTTPS 站點。 超級安全。
同樣,這個頭部是 Django 內置的。 如果你沒有設置 max-age 值你會看到 security.W004警告。如果你沒有設置 includeSubDomains 標志 則會看到 security.W005警告,同樣,如果你未設置 preload 標志,那么你將看到security.W021警告。
啟用說明:
·SecurityMiddleware 的安裝和設置同上
·將 SECURE_HSTS_SECONDS 設置為你想在頭部指定的秒數
·(可選)設置SECURE_HSTS_INCLUDE_SUBDOMAINS  及SECURE_HSTS_PRELOAD 為True 激活他們各自的標志
這不是你可以簡單啟用的東西,特別是如果其他子域正在使用這些選項的話! 只有當你擁有一個全新的域名時,它才會變得簡單明了。 Django 的 security.W004 甚至有如下說明:

[1] [2] [3]  下一頁

【聲明】:黑吧安全網(http://www.nkppsz.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        秒速时时彩骗局