摘要:在本文中,我將介紹常用的安全頭信息設(shè)置,并給出一個示例。響應(yīng)頭指定了該響應(yīng)的資源是否被允許與給定的共享。示例指定可以送達的域名,默認為當前域名不包含子域名只有在協(xié)議時才會被發(fā)送到服務(wù)端。
在本文中,我將介紹常用的安全頭信息設(shè)置,并給出一個示例。在本文的最后,我將介紹用于常見應(yīng)用程序和web服務(wù)器的安全頭信息示例設(shè)置。
Content-Security-Policy內(nèi)容安全策略(CSP)常用來通過指定允許加載哪些資源來防止跨站點腳本攻擊。在接下來所介紹的所有安全頭信息中,CSP 可能是創(chuàng)建和維護花費時間最多的而且也是最容易出問題的。在配置你的網(wǎng)站 CSP 過程中,要小心徹底地測試它,因為阻止某些資源有可能會破壞你的網(wǎng)站的功能。
功能CSP 的主要目標是減少和報告 XSS 攻擊, XSS 攻擊利用了瀏覽器對于從服務(wù)器所獲取的內(nèi)容的信任。使得惡意腳本有可能在用戶的瀏覽器中執(zhí)行,因為瀏覽器信任其內(nèi)容來源,即使有時候這些腳本并非來自該站點的服務(wù)器當中。
CSP 通過指定允許瀏覽器加載和執(zhí)行那些資源,使服務(wù)器管理者有能力減少或消除 XSS 攻擊的可能性。 一個 CSP 兼容的瀏覽器將會僅執(zhí)行從白名單域獲取得到的腳本文件,忽略所有其他的腳本(包括內(nèi)聯(lián)腳本)。
示例一個最佳的 CSP 可能是下面這樣(注釋按照配置值的順序),在站點包含的每一部分資源請求相關(guān)都加入域名限制。
# 所有的內(nèi)容(比如: JavaScript,image,css,fonts,ajax request, frams, html5 Media等)均來自和站點的同一個源(不包括其子域名) # 允許加載當前源的圖片和特定源圖片 # 不允許 objects(比如 Flash 和 Java) # 僅允許當前源的腳本下載和執(zhí)行 # 僅允許當前源的 CSS 文件下載和執(zhí)行 # 僅允許當前源的 frames # 限制標簽中的 URL 與當前站點同源 # 僅允許表單提交到當前站點 Content-Security-Policy: default-src "self"; img-src "self" https://img.com; object-src "none"; script-src "self"; style-src "self"; frame-ancestors "self"; base-uri "self"; form-action "self";
關(guān)于 CSP 更加詳細的介紹可以看 https://content-security-poli...
Strict-Transport-SecurityStrict-Transport-Security(HSTS) 告訴瀏覽器該站點只能通過 HTTPS 訪問,如果使用了子域,也建議對任何該站點的子域強制執(zhí)行此操作。
功能一個站點如果接受了一個 HTTP 請求,然后跳轉(zhuǎn)到 HTTPS,用戶可能在開始跳轉(zhuǎn)前,通過沒有加密的方式和服務(wù)器對話。這樣就存在中間人攻擊的潛在威脅,跳轉(zhuǎn)過程可能被惡意網(wǎng)站利用來直接接觸用戶信息,而不是原來的加密信息。
網(wǎng)站通過HTTP Strict Transport Security通知瀏覽器,這個網(wǎng)站禁止使用HTTP方式加載,瀏覽器應(yīng)該自動把所有嘗試使用HTTP的請求自動替換為HTTPS請求。
示例# 瀏覽器接受到這個請求后的 3600 秒內(nèi)的時間,凡是訪問這個域名下的請求都是用https請求 # 指定 includeSubDomains 此規(guī)則適用該站點下的所有子域名 Strict-Transport-Security: max-age=3600; includeSubDomainsX-Content-Type-Options
X-Content-Type-Options 響應(yīng)頭相當于一個提示標志,被服務(wù)器用戶提示瀏覽器一定要遵循 Content-Type 頭中 MIME 類型的設(shè)定,而不能對其進行修改。
功能它減少了瀏覽器可能“猜測”某些內(nèi)容不正確的意外應(yīng)用程序行為,例如當開發(fā)人員將一個頁面標記為“HTML”,但瀏覽器認為它看起來像JavaScript并試圖將其呈現(xiàn)為JavaScript時。這個頭將確保瀏覽器始終按照服務(wù)器設(shè)置的MIME類型來解析。
示例X-Content-Type-Options: nosniffCache-Control
Cache-Control 通用消息頭字段,被用于在 http 請求和響應(yīng)中,通過指定指令來實現(xiàn)緩存機制。緩存指令是單向的,這意味著在請求中設(shè)置的指令,不一定被包含在響應(yīng)中。
功能這一個比其他的稍微復(fù)雜一些,因為你可能需要針對不同的內(nèi)容類型使用不同的緩存策略。
任何包含有敏感信息的網(wǎng)頁,例如用戶個人信息頁面或客戶結(jié)帳頁面,都應(yīng)該設(shè)置為 no-cache。原因是防止共享計算機上的某人按下后退按鈕或瀏覽歷史并查看個人信息。
示例Cache-Control: no-cacheX-Frame-Options
X-Frame-Options 響應(yīng)頭是用來給瀏覽器指示允許一個頁面可否在 ,
功能如果惡意的站點將你的網(wǎng)頁嵌入到 iframe 標簽中, 在你不知道的情況下打開并點擊惡意網(wǎng)站的某個按鈕,惡意網(wǎng)站能夠執(zhí)行一個攻擊通過運行一些 JavaScript 將捕獲點擊事件到 iframe 中,然后代表你與網(wǎng)站交互。
將 X-Frame-Options 設(shè)置為 deny 可以禁止該頁面在任何域中的 ifram 標簽中展示。
X-Frame-Options 設(shè)置可以由 CSP 的 frame-ancestors 配置所代替。
示例X-Frame-Options: DENY # 表示該頁面不允許在 frame 中展示,即便是在相同域名的頁面中嵌套也不允許。 X-Frame-Options: SAMEORIGIN # 表示該頁面可以在相同域名頁面的 frame 中展示。 X-Frame-Options: ALLOW-FROM uri # 表示該頁面可以在指定來源的 frame 中展示。Access-Control-Allow-Origin
Access-Control-Allow-Origin 響應(yīng)頭指定了該響應(yīng)的資源是否被允許與給定的 origin 共享。
功能可以被用來可解決瀏覽器的跨域請求。
比如一個站點 A 頁面中發(fā)起一個 AJAX 請求到 站點 B, A B 不同源。正常情況下因為瀏覽器的同源策略將不會把 B 的響應(yīng)結(jié)果返回給 A, 除非 B 在響應(yīng)頭中設(shè)置允許 A 站點發(fā)起請求。
示例Access-Control-Allow-Origin: * # 允許所有域請求 Access-Control-Allow-Origin: http://someone.com # 允許特定域請求Set-Cookie
Set-Cookie 響應(yīng)頭被用來由服務(wù)器端向客戶端發(fā)送 cookie。
示例# domain: 指定 cookie 可以送達的域名,默認為當前域名(不包含子域名) # Secure: 只有在 https 協(xié)議時才會被發(fā)送到服務(wù)端。然而,保密或敏感信息永遠不要在 HTTP cookie 中存儲或傳輸,因為整個機制從本質(zhì)上來說都是不安全的 # HttpOnly: cookie 不能使用 JavaScript代碼獲取到 Set-Cookie:X-XSS-Protection= ; Domain= ; Secure; HttpOnly
X-XSS-Protection 響應(yīng)頭是Internet Explorer,Chrome和Safari的一個功能,當檢測到跨站腳本攻擊 (XSS)時,瀏覽器將停止加載頁面。
示例X-XSS-Protection: 1; mode=block # 啟用XSS過濾。如果檢測到 XSS 攻擊,瀏覽器將不會清除頁面,而是阻止頁面加載。總結(jié)
設(shè)置 HTTP 頭信息是相對快速和簡單的對于網(wǎng)站的數(shù)據(jù)保護、XSS 攻擊和點擊劫持等攻擊。有針對性的設(shè)置這些頭信息,你的網(wǎng)站的安全性將會有不錯的提高。
面試題查看原文
關(guān)注github每日一道面試題詳解
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/106348.html
摘要:而如果跨域請求是從腳本里面發(fā)出去的,由于腳本具有高度靈活性,瀏覽器出于安全考慮,會根據(jù)同源策略來限制它的功能,使得正常情況下,腳本只能請求同源的資源。反之,則稱為跨域請求,需要遵守機制。非簡單跨域請求在發(fā)出請 原文發(fā)布于我的博客:https://blog.serenader.me/htt... 自從我接觸前端以來,接手的項目里面很大部分都是前后端分離的,后端只提供接口,前端根據(jù)后端...
摘要:狀態(tài)行通過提供一個狀態(tài)碼來說明所請求的資源情況。請求出現(xiàn)語法錯誤。服務(wù)器端暫時無法處理請求可能是過載或維護。 全端工程師需知道的計算機網(wǎng)絡(luò)知識 一、網(wǎng)絡(luò)篇—http報文詳解 1. 分類 請求報文 響應(yīng)報文 2. 報文結(jié)構(gòu) (一)、請求報文 一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)4個部分組成; 請求行 由請求方法字段、UR...
摘要:狀態(tài)行通過提供一個狀態(tài)碼來說明所請求的資源情況。請求出現(xiàn)語法錯誤。服務(wù)器端暫時無法處理請求可能是過載或維護。 全端工程師需知道的計算機網(wǎng)絡(luò)知識 一、網(wǎng)絡(luò)篇—http報文詳解 1. 分類 請求報文 響應(yīng)報文 2. 報文結(jié)構(gòu) (一)、請求報文 一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)4個部分組成; 請求行 由請求方法字段、UR...
閱讀 3212·2023-04-26 01:30
閱讀 675·2021-11-08 13:15
閱讀 1796·2021-09-24 10:35
閱讀 1009·2021-09-22 15:41
閱讀 1934·2019-08-30 15:44
閱讀 603·2019-08-30 13:22
閱讀 1013·2019-08-30 13:06
閱讀 1203·2019-08-29 13:22