介紹 MDN HTTP 觀察站
在其生命週期中,Mozilla 的 HTTP Observatory 工具已掃描了超過 690 萬個網站,提供了有用的、可操作的見解,指導開發人員如何提高網路安全並保護他們的網站免受潛在攻擊者的侵害。
HTTP Observatory 測試網站是否符合安全最佳實踐,主要涉及 HTTP 標頭的正確使用。掃描完成後,它會向用戶提供一份報告,告知使用者他們的網站表現如何,並附有總體分數和等級,以及指向文件的連結,解釋如何改進他們的安全性。
今天,我們很高興地宣佈,HTTP Observatory 的新家是 MDN!這篇博文將簡要介紹該工具的歷史,我們如何走到今天,此次遷移對 Observatory 和 MDN 的意義,以及 Observatory 測試的內容。
立即檢視 新的 HTTP Observatory。
MDN HTTP Observatory 簡史
2016 年,當時的 Mozilla 安全工程師 April King 宣佈了 HTTP Observatory 工具的首次釋出。HTTP Observatory 最初是作為一個內部測試工具,旨在幫助 Mozilla 開發人員將安全最佳實踐應用於他們自己的網站,後來被打包成一個任何人都可以使用的網站,因為 April 沮喪地發現網路上很少有網站應用了這些最佳實踐。
自那時以來,HTTP Observatory 的受歡迎程度激增,有超過 690 萬個網站被掃描了總計 4700 萬次!Mozilla 的基礎設施安全團隊定期維護該工具以改進服務,隨著安全最佳實踐和標準的更新而新增新測試,並隨著舊技術的過時而移除相關的測試。
然而,這還不是全部故事。HTTP Observatory 的成功取決於兩件事。
- 首先,該網站將提高網站安全性的過程遊戲化——每組測試結果都附有分數和等級,多年來,開發人員一直熱衷於獲得那有時難以實現的 A+ Observatory 評級!
- 其次,HTTP Observatory 透過提供易於理解的反饋來幫助開發人員理解網站安全要求——這些要求通常相當晦澀難懂——並指導他們如何修復其十幾個測試所突出顯示的問題。相關的文件都可以在一個地方找到。
將 HTTP Observatory 遷移到 MDN
那麼,是什麼促使遷移到 MDN 呢?簡而言之,MDN 和 HTTP Observatory 之間有著非常好的互補性——它們都以開發人員教育和改善網際網路健康為核心驅動原則。
更長的答案是,HTTP Observatory 在網路和安全社群中是一個備受尊敬的工具,但它已經有一段時間沒有進行重大更新了。Mozilla 認為該工具應該得到發展,並找到新的受眾來受益於其中包含的安全知識。
MDN 是一個受歡迎的網站,擁有大量可以從中受益的網路開發人員受眾,因此它似乎是一個完美的歸宿。此外,我們的團隊非常樂意更新該工具的使用者介面、功能和文件,使其現代化並進行一些最佳化。此次更新是與 Mozilla 的基礎設施和安全風險團隊合作完成的;他們提供了專家建議,幫助我們自信地更新 HTTP Observatory 的測試和文件。
檢視 MDN 上的 HTTP Observatory,以及隨附的 實用安全實施指南。
HTTP Observatory 測試什麼內容?
HTTP Observatory 測試以下安全功能
- 安全的 cookie 配置:應儘可能嚴格地限制 cookie 的訪問,以防止 跨站指令碼攻擊 (XSS) 和 跨站請求偽造 (CSRF) 等攻擊。
- 跨域資源共享 (CORS):將跨域資源訪問限制在必要範圍內。
- 內容安全策略 (CSP):提供對網站資源載入位置的精細控制。
Strict-Transport-Security:強制透過 HTTPS 連線網站,以防止 中間人攻擊 (MiTM)。- 初始載入時正確的 重定向行為 至 HTTPS:防止初始載入時的攻擊。
Referrer-Policy:防止敏感資訊洩露。- 子資源完整性 (SRI):驗證獲取的資源在未被意外篡改的情況下進行傳遞。
X-Content-Type-Options:強制正確的資源 MIME 型別,以進一步緩解 XSS 攻擊。Content-Security-Policy: frame-ancestors和X-Frame-Options:限制其他網站將您的網站嵌入<iframe>的能力,有助於防止 點選劫持。Cross-Origin-Resource-Policy:阻止其他來源的某些請求訪問您網站上的資源,以緩解 Spectre 等推測性側通道攻擊。
常見問題解答
我應該實施所有建議嗎?
是的,如果可能的話,你應該這樣做。無法透過程式設計方式確定任何給定網站的風險級別。但是,即使您的網站風險不高,也仍然值得了解 Observatory 強調的防禦性安全標準,並儘可能實施它們。
如果我獲得 A+ 等級,是否意味著我的網站是安全的?
我們很想說任何獲得 A+ Observatory 等級的網站都是完全安全的,但有許多我們無法測試的安全注意事項。Observatory 測試旨在防禦 跨站指令碼 (XSS) 攻擊、中間人 (MiTM) 攻擊、跨域資訊洩露、不安全的 cookie、內容分發網路 (CDN) 洩露以及證書頒發不當等。
但是,它不測試過時的軟體版本、SQL 注入漏洞、易受攻擊的內容管理系統外掛、不正確的密碼建立或儲存等等。這些與 Observatory *確實* 測試的問題一樣重要,網站運營商不應因在 Observatory 上得分高而忽略它們。
我可以掃描非網站,例如 API 端點嗎?
HTTP Observatory 是為掃描網站而設計的,而不是 API 端點。它可以用於 API 端點,並且 Observatory 所期望的安全標頭不應對僅返回資料(如 JSON 或 XML)的 API 造成任何負面影響。但是,結果可能無法準確反映 API 的安全狀況。API 端點通常只能透過 HTTPS 訪問。API 端點的推薦配置是
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'
Strict-Transport-Security: max-age=63072000
X-Content-Type-Options: nosniff
其他人能看到我的測試結果嗎?
任何人都可以選擇掃描任何域名,並且每個域名的掃描歷史都是公開的。但是,HTTP Observatory 不會儲存與每次掃描相關的使用者資料。在舊版本的 HTTP Observatory 中,使用者可以選擇將掃描設定為“公開”或保持私有(預設),並且有一個“最近掃描”列表,其中列出了域名。“最近掃描”是使用者可能希望選擇退出的主要功能,但它不再受支援,因此現在沒有理由提供“公開”標誌。
遷移何時發生?
新的 HTTP Observatory 於 2024 年 7 月 2 日在 MDN 上釋出。舊的 Mozilla Observatory——包括 HTTP Observatory 以及 TLS Observatory、SSH Observatory 和第三方測試等其他工具——已被棄用,並將於 2024 年 9 月停止使用。
注意:歷史掃描資料已得到保留,幷包含在每個域名的提供的掃描歷史記錄中。
遷移後有什麼變化?
MDN 團隊已
- 更新了使用者體驗,以改善網站的外觀並使其更易於使用。例如,測試結果突出顯示的建議會一起顯示,而不是一次顯示一個。
- 更新了配套文件,使其現代化並提高可讀性。
- 更改了“重新掃描”複選框及其底層機制
- 不再有重新掃描引數。
- 一個站點每 60 秒只能掃描一次並返回新結果。
- 深度連結到報告中,如果先前的掃描資料早於 24 小時,則會觸發重新掃描。
- 更新了
Cross-Origin-Resource-Policy(CORP) 測試。- 移除了過時的
X-XSS-Protection測試。 - 移除了過時的 Flash 和 Silverlight(
clientaccesspolicy.xml和crossdomain.xml)嵌入測試。 - 添加了
Cross-Origin-Resource-Policy(CORP) 測試。 - 更新了
Referrer-Policy測試,以更新referrer-policy-unsafe的分數修改器並移除referrer-policy-no-referrer-when-downgrade的結果。
- 移除了過時的
HTTP Observatory API 是否已更新以使用新測試?
尚未。API 將在一段時間內繼續使用舊的測試基礎設施,因此您會看到 API 和網站返回的測試分數之間存在一些細微差異。API 將在未來的迭代中更新以使用新測試。
新的 HTTP Observatory 是否提供特定的 TLS 和證書資料?
以前的 Observatory 網站包含特定的結果選項卡,其中包含 TLS 和證書分析資料。新的網站不包含這些,目前也沒有計劃包含這些功能:它側重於 HTTP 資料。
(重定向) HTTP 重定向測試評估什麼?
此測試正在檢查您的 Web 伺服器是否在進行任何進一步重定向之前,將其初始重定向從 HTTP 轉換為 HTTPS(在同一主機名上)。這允許正確應用 HTTP Strict-Transport-Security (HSTS) 標頭。
例如,此重定向順序是正確的
http://example.com → https://example.com → https://www.example.com
不正確的(受到懲罰的)重定向如下所示
http://example.com → https://www.example.com
(X-Frame-Options) 如果我希望允許我的網站被框架化,該怎麼辦?
只要您透過使用 Content-Security-Policy 的 frame-ancestors 指令明確表達您的偏好,您將透過 X-Frame-Options 測試。例如,要允許您的網站被任何 HTTPS 網站框架化
Content-Security-Policy: frame-ancestors https:
動手試試
我們很樂意讓您嘗試 MDN 上的 HTTP Observatory!立即訪問它,掃描您的網站,並填寫我們的HTTP Observatory 調查,讓我們知道您對這次體驗的看法。
HTTP Observatory 的文件(在測試結果中連結)現在也位於 MDN 的實用安全實施指南部分。再次,請閱讀它,並告訴我們如何改進。