一些安全相關的HTTP header

来源:https://www.cnblogs.com/amyzhu/archive/2018/12/17/10134163.html
-Advertisement-
Play Games

1.Strict Transport Security HTTP Strict Transport Security,簡稱為HSTS。 作用:允許一個HTTPS網站,要求瀏覽器總是通過HTTPS訪問它。 includeSubDomains,可選,用於指定是否作用於子功能變數名稱 支持HSTS的瀏覽器遇到這個 ...


1.Strict-Transport-Security

HTTP Strict-Transport-Security,簡稱為HSTS。
作用:允許一個HTTPS網站,要求瀏覽器總是通過HTTPS訪問它。

strict-transport-security: max-age=16070400; includeSubDomains
  • includeSubDomains,可選,用於指定是否作用於子功能變數名稱
  • 支持HSTS的瀏覽器遇到這個響應頭,會把當前網站加入HSTS列表,然後在max-age指定的秒數內,當前網站所有請求都會被瀏覽器重定向為https。
  • Chrome內置了一個HSTS列表,預設包含Google、Paypal、Twitter、Linode等服務。輸入chrome://net-internals/#hsts,進入HSTS管理界面,可以增加/刪除/查詢HSTS記錄。

2.X-Frame-Options:是否允許一個頁面可在<frame>、<iframe>、<object>中展現的標記。

作用:減少/避免點擊劫持 (clickjacking) 的攻擊。
使用方式如下:

x-frame-options: SAMEORIGIN

響應頭支持三種配置:

  • DENY:表示該頁面不允許在 frame 中展示,即便是在相同功能變數名稱的頁面中嵌套也不允許。
  • SAMEORIGIN:表示該頁面可以在相同功能變數名稱頁面的 frame 中展示。
  • ALLOW-FROM uri:表示該頁面可以在指定來源的 frame 中展示。

3.X-XSS-Protection

作用:防範XSS攻擊。
PS:這個是舊屬性,基本上可以被CSP取代,但是仍可以為還沒有支持CSP的瀏覽器提供一層保護。
主流瀏覽器預設都開啟了XSS保護。
使用方式如下:

X-XSS-Protection: 1; mode=block; report=/_/http-sec-report

支持配置:

  • 0:禁止XSS保護
  • 1:啟用XSS保護:啟用XSS保護,瀏覽器檢測到XSS攻擊會自動過濾非安全部分內容
  • 1;mode=block:啟用XSS保護,併在檢測到XSS攻擊的時候停止渲染頁面
  • 1;report=:啟用XSS保護,檢測到XSS攻擊的時候,瀏覽器會自動過濾非安全內容,同時上報到指定URI。

4.X-Content-Type-Options

作用:禁用瀏覽器的Content-Type猜測行為。

背景:
瀏覽器通常會根據響應頭Content-Type欄位來分辨資源類型。有些資源的Content-Type是錯的或者未定義。這時,瀏覽器會啟用MIME-sniffing來猜測該資源的類型,解析內容並執行。
利用這個特性,攻擊者可以讓原本應該解析為圖片的請求被解析為JavaScript。

使用方法:

X-Content-Type-Options: nosniff

5.X-Content-Security-Policy(舊版)/Content-Security-Policy

作用:用於定義頁面可以載入哪些資源,減少和上報XSS的攻擊,防止數據包嗅探攻擊。

響應頭:

  • Content-Security-Policy
  • X-Content-Security-Policy
  • X-Webkit-CSP

使用方法:

Content-Security-Policy: default-src 'self'
  • 一個策略由一系列策略指令組成,每個策略指令都描述了一個針對某個特定類型資源以及生效範圍的策略。
  • default-src是CSP指令,多個指令之間使用英文分號分割;
  • self是指令值,多個指令值用英文空格分割。
  • 支持的CSP指令

元素也可以用於配置CSP:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
指令 指令值示例 說明
default-src 'self' cnd.a.com 定義針對所有類型資源的預設載入策略,某類型資源如果沒有單獨定義策略,就使用預設的。
script-src 'self' js.a.com 定義針對JavaScript的載入策略
style-src 'self' css.a.com 定義針對樣式的載入策略
img-src 'self' img.a.com 定義針對圖片的載入策略
connect-src 'self' 針對Ajax、WebSocket等請求的載入策略。不允許的情況下,瀏覽器會模擬一個狀態為400的響應。
font-src font.a.com 針對WebFont的載入策略
object-src 'self' 針對<object>、<embed>、<applet>等標簽引入的flash等插件的載入策略
media-src media.a.com 針對<audio>、<video>等標簽引入的HTML多媒體的載入策略。
frame-src 'self' 針對frame的載入策略
sanbox allow-forms 對請求的資源啟用sandbox(類似於iframe的sandbox屬性)
report-uri /report-uri 告訴瀏覽器如果請求不被策略允許,往哪個地址提交日誌信息。如果想讓瀏覽器只彙報日誌,不阻止任何內容,可以改用 Content-Security-Policy-Report-Only 頭。

指令值可以由下麵內容組成:

指令值 指令值示例 說明
img-src 允許任何內容
'none' img-src 'none' 不允許任何內容
'self' img-src 'self' 允許來自相同源的內容(相同的協議、功能變數名稱和埠)。
data: img-src data: 允許data:協議(如base64編碼的圖片)
www.a.com img-src img.a.com 允許載入指定功能變數名稱的資源
.a.com img-src .a.com 允許載入a.com任何子域的資源
https://img.com img-src https://img.com 允許載入img.com的https資源
https: img-src https: 允許載入https資源
'unsafe-inline' script-src 'unsafe-inline' 允許載入inline資源(例如常見的style屬性,onclick, inline js, inline css)。
'unsafe-eval' script-src 'unsafe-eval' 允許載入動態js代碼,例如eval()。

違例報告

  • document-uri:發生違規的文檔的URI。
  • referrer:違規發生處的文檔引用地址
  • blocked-uri:被CSP阻止的資源URI。如果被阻止的URI來自不同的源而非文檔URI,則被阻止的資源URI會被刪減,僅保留協議、主機和埠號。
  • violated-directive:違反的策略名稱
  • original-policy:在Content-Security-Policy HTTP header中指明的原始策略。
  • HttpOnly:防止使用javascript(如document.cookie)去存取cookie
  • Secure:強制cookie只能在HTTPS環境下傳遞

7.Referrer-Policy

作用:增加隱私保護。

可配置值:

  • no-referrer: 不允許被記錄
  • origin:只記錄origin,即功能變數名稱
  • strict-origin:只有在HTTPS->HTTPS之間才會被記錄下來
  • strict-origin-when-cross-origin:同源請求會發送完整的URL;HTTPS->HTTPS,發送源;降級下不發送此首部。
  • no-referrer-when-downgrade(default):同strict-origin
  • origin-when-cross-origin:對於同源的請求,會發送完整的URL作為引用地址,但是對於非同源請求僅發送文件的源。
  • same-origin:對於同源請求會發送完整URL,非同源請求則不發送referer
  • unsafe-url:無論是同源請求還是非同源請求,都發送完整的URL(移除參數信息之後)作為引用地址。(可能會泄漏敏感信息)

8.Public-Key-Pins(HPKP)

作用:防止中間人攻擊。是HTTPS網站防止攻擊者利用CA錯誤簽發的證書進行中間人攻擊的一種安全機制,用於預防CA遭入侵或者其他會造成CA簽發未授權證書的情況。
伺服器通過Public-Key-Pins(或Public-Key-Pins-Report-Onky用於監測)header向瀏覽器傳遞HTTP公鑰固定信息。

基本格式:

Public-Key-Pins: pin-sha256="base64=="; max-age=expireTime [; includeSubdomains][; report-uri="reportURI"]

欄位含義:

  • pin-sha256:即證書指紋,允許出現多次,實際上應用最少指定兩個;
  • max-age:過期時間
  • includeSubdomains:是否包含子域
  • report-uri:驗證失敗時上報的地址

安全掃描網站:https://securityheaders.com/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 語法: USE 資料庫名ALTER TABLE 表名 ADD 欄位名 類型 預設值 是否為空;EXEC sp_addextendedproperty N'MS_Description', N'註釋內容', N'SCHEMA', N'dbo',N'TABLE', N'表名', N'COLUMN', N ...
  • DBA_* 描述的是資料庫中的所有對象 ALL_* 描述的是當前用戶有訪問許可權的所有對象 USER_* 描述的是當前用戶所擁有的所有對象 查看所有用戶: select * from dba_users; >顯示所有用戶的詳細信息 select * from all_users; >顯示用戶及用戶id ...
  • 從零學習Fluter(九):正式使用flutter進入商業開發 ...
  • pass ...
  • 在真機設備下有一個開發者選項,這個大家都知道,我們最常用的就打開'USB調試'功能,方便真機調試。 在這開發者選項中還有個選項,'調試GPU過度繪製' 這裡選擇第二個選項'顯示過度繪製區域' 可以看到針對該界面 每一個控制項周邊都有一塊顏色區域 顏色對應: 原色:沒有過度繪製 藍色:1 次過度繪製 綠 ...
  • 在p便簽內寫的{{reversemessage}}方法,若js里對應的函數為computed則不需要加上括弧 若js里對應的函數為model則應該將{{reversemessage}}改為{{reversemessage()}} 兩者在緩存方式上也有區別,利用computed計算屬性是將 rever ...
  • 一,效果圖。 二,代碼。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>javascript 條件語句</title> </head> <body> <p>如果時間早於20:00,會獲得問候“Good day”.</p> <b ...
  • 這篇文章是因為,我們在做的後臺項目,裡面有大量的表格統計,這個不可能自己手寫,所以其中的表格使用的是jqgrid。 這個插件其實使用起來還是不錯的,裡面有很多的功能很贊。這篇博客就是自己的的一個記錄,也是對以後項目的一個參考。因為有一些代碼總是記不住。 首先就是引入這個插件所需要的js和css了,這 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...