狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SecurityHeaders:為.Net網站添加安全標頭,讓Web更加安全、避免攻擊!

admin
2024年8月30日 23:50 本文熱度 651
網站的安全對于任何一家公司都是非常重要的。

為了保證Web安全,其中Http安全標頭就是非常重要一個的措施。設定正確的安全頭可以增強網站的安全性,因為它們可以幫助防止各種網絡攻擊,如跨站腳本(XSS)、點擊劫持(Clickjacking)和內容類型嗅探(Content Type Sniffing)等。
下面推薦一個開源項目,可以讓我們輕松地添加安全相關的HTTP頭到網站中。
 

01

項目簡介

NetEscapades.AspNetCore.SecurityHeaders 是一個輕便的的 ASP.NET Core 開源庫,旨在方便開發者向 ASP.NET Core 網站添加安全頭(Security Headers)。
該庫提供了一套默認的安全頭,都是非常常見的,這些頭被廣泛應用于提高網站的安全性。

02

核心功能與特點
1、提供默認安全頭
X-Content-Type-Options: nosniff:防止瀏覽器嘗試“嗅探”響應的內容類型。
Strict-Transport-Security:max-age=31536000; includeSubDomains(僅HTTPS響應):強制瀏覽器通過HTTPS與服務器建立連接。
X-Frame-Options: Deny(僅“document”響應):防止網站被嵌入到iframe中。
X-XSS-Protection: 1; mode=block(僅“document”響應):啟用瀏覽器的XSS過濾器。
Referrer-Policy: strict-origin-when-cross-origin:控制HTTP請求的Referer頭部。
Content-Security-Policy(CSP):定義哪些動態資源是允許的,幫助防止XSS攻擊等。
2、自定義安全頭:開發者可以根據需要自定義安全頭。
3、內容安全策略(CSP):精細控制哪些外部資源(如腳本、樣式表、圖片等)可以被加載到網頁上。
4、權限策略(Permissions Policy):控制的是瀏覽器特性和API的使用,而不是資源加載。通過Permissions Policy,開發者可以確保敏感API(如地理位置、攝像頭等)不會被濫用。
5、Nonce和哈希:對于需要內聯腳本或樣式的情況,CSP支持使用Nonce(一次性數字)或哈希值來允許這些內聯內容。
6、靈活性:可以根據需要啟用或禁用特定的安全頭,或者調整它們的配置,以滿足不同的安全需求。
7、集成簡單:該庫通過中間件的形式集成到ASP.NET Core應用中,只需一行代碼就可以輕松集成。

03

使用方法

1、默認安全頭

app.UseSecurityHeaders();
2、自定義安全頭
// 創建一個新的HeaderPolicyCollection實例,用于配置安全頭部  var policyCollection = new HeaderPolicyCollection()      // 添加X-Frame-Options頭部,設置為DENY,防止網站被嵌入到iframe中      .AddFrameOptionsDeny()      // 添加X-XSS-Protection頭部,設置為BLOCK,嘗試阻止跨站腳本攻擊      .AddXssProtectionBlock()      // 添加X-Content-Type-Options頭部,設置為nosniff,防止瀏覽器嘗試基于內容“嗅探”響應的內容類型      .AddContentTypeOptionsNoSniff()      // 添加Strict-Transport-Security頭部,設置max-age為一年(秒為單位),并包含所有子域      // 這要求瀏覽器僅通過HTTPS與服務器通信      .AddStrictTransportSecurityMaxAgeIncludeSubDomains(maxAgeInSeconds: 60 * 60 * 24 * 365) // maxage = one year in seconds      // 添加Referrer-Policy頭部,設置為strict-origin-when-cross-origin      // 這控制了在跨源請求中是否發送Referer頭部,以及發送多少信息      .AddReferrerPolicyStrictOriginWhenCrossOrigin()      // 移除Server頭部,以減少信息泄露      .RemoveServerHeader()      // 添加Content-Security-Policy頭部,配置詳細的資源加載策略      .AddContentSecurityPolicy(builder =>      {          // 禁止從任何源加載對象(如插件)          builder.AddObjectSrc().None();          // 僅允許表單操作(如提交)到同一源          builder.AddFormAction().Self();          // 禁止將當前頁面作為frame的祖先          builder.AddFrameAncestors().None();      })      // 添加Cross-Origin-Opener-Policy頭部,設置為same-origin      // 這控制了哪些文檔可以通過window.open(), window.createPopup(), 或類似的方法打開      .AddCrossOriginOpenerPolicy(builder =>      {          builder.SameOrigin();      })      // 添加Cross-Origin-Embedder-Policy頭部,設置為require-corp      // 這要求嵌入的文檔通過COEP報頭聲明它們是COOP兼容的      .AddCrossOriginEmbedderPolicy(builder =>      {          builder.RequireCorp();      })      // 添加Cross-Origin-Resource-Policy頭部,設置為same-origin      // 這控制了哪些源可以加載資源(如圖片、腳本等)      .AddCrossOriginResourcePolicy(builder =>      {          builder.SameOrigin();      })      // 添加自定義的HTTP頭部      .AddCustomHeader("X-My-Test-Header", "Header value");  
// 使用配置好的安全頭部策略  app.UseSecurityHeaders(policyCollection);

3、移除服務器響應標頭

var host = new WebHostBuilder()    .UseKestrel(options => options.AddServerHeader = false)

4、內容安全策略

// 創建一個HeaderPolicyCollection實例,用于定義和管理HTTP響應的安全頭  var policyCollection = new HeaderPolicyCollection()      .AddContentSecurityPolicy(builder =>      {          // 添加策略以自動將不安全的請求(如HTTP)升級到HTTPS          builder.AddUpgradeInsecureRequests(); // upgrade-insecure-requests  
       // 阻止所有混合內容(HTTPS頁面中的HTTP資源)          builder.AddBlockAllMixedContent(); // block-all-mixed-content  
       // 指定用于接收CSP違規報告的URI          builder.AddReportUri() // report-uri: https://report-uri.com              .To("https://report-uri.com");  
       // 定義默認的源策略,僅允許加載當前來源和http://testUrl.com的資源          builder.AddDefaultSrc() // default-src 'self' http://testUrl.com              .Self() // 僅允許加載來自相同源的資源              .From("http://testUrl.com"); // 允許加載來自http://testUrl.com的資源  
       // 定義允許連接的源          builder.AddConnectSrc() // connect-src 'self' http://testUrl.com              .Self() // 允許與當前源建立連接              .From("http://testUrl.com"); // 允許與http://testUrl.com建立連接  
       // 定義允許加載的字體源          builder.AddFontSrc() // font-src 'self'              .Self(); // 僅允許加載來自相同源的字體  
       // 禁止通過<object>、<embed>或<applet>標簽加載資源          builder.AddObjectSrc() // object-src 'none'              .None(); // 禁用<object>、<embed>或<applet>  
       // 定義表單動作源,即限制哪些源可以處理表單提交          builder.AddFormAction() // form-action 'self'              .Self(); // 僅允許表單提交到當前源  
       // 定義圖片資源只能來自HTTPS源          builder.AddImgSrc() // img-src https:              .OverHttps(); // 僅允許HTTPS協議的圖片資源  
       // 定義腳本資源策略,允許加載來自相同源的腳本,允許內聯腳本和eval,并報告樣本          builder.AddScriptSrc() // script-src 'self' 'unsafe-inline' 'unsafe-eval' 'report-sample'              .Self() // 允許加載來自相同源的腳本              .UnsafeInline() // 允許內聯腳本              .UnsafeEval() // 允許使用eval()等函數              .ReportSample(); // 報告腳本樣本以供審查  
       // 定義樣式資源策略,允許加載來自相同源的樣式,并啟用嚴格動態檢查          builder.AddStyleSrc() // style-src 'self' 'strict-dynamic'              .Self() // 允許加載來自相同源的樣式              .StrictDynamic(); // 啟用嚴格動態檢查  
       // 定義媒體資源只能來自HTTPS源          builder.AddMediaSrc() // media-src https:              .OverHttps(); // 僅允許HTTPS協議的媒體資源  
       // 定義可以嵌入當前頁面的框架的源,此處禁用所有框架嵌入          builder.AddFrameAncestors() // frame-ancestors 'none'              .None(); // 禁止任何源嵌入當前頁面  
       // 定義基準URI,限制頁面內基礎URI(如<base>標簽)的來源          builder.AddBaseUri() // base-uri 'self'              .Self(); // 僅允許基礎URI與當前源相同  
       // 定義可以嵌入<frame>、<iframe>、<object>、<embed>或<applet>的源          builder.AddFrameSource() // frame-src http://testUrl.com              .From("http://testUrl.com"); // 允許嵌入來自http://testUrl.com的框架  
       // 添加自定義指令,例如限制允許的插件類型          builder.AddCustomDirective("plugin-types", "application/x-shockwave-flash"); // 限制只允許Flash插件  
   })      // 添加自定義HTTP頭      .AddCustomHeader("X-My-Test-Header", "Header value");  
// 使用定義好的安全頭策略  app.UseSecurityHeaders(policyCollection);

5、權限策略

// 創建一個HeaderPolicyCollection實例,用于存儲和配置各種安全策略  var policyCollection = new HeaderPolicyCollection()      // 添加Permissions Policy(功能策略),用于控制網頁可以使用哪些Web功能      .AddPermissionsPolicy(builder =>      {          // 允許頁面從自身源('self')或指定的URL(http://testUrl.com)訪問加速度計          builder.AddAccelerometer()              .Self()              .For("http://testUrl.com");  
       // 允許頁面從自身源訪問環境光傳感器          builder.AddAmbientLightSensor()              .Self()              .For("http://testUrl.com");  
       // 允許頁面自動播放媒體內容,僅從自身源          builder.AddAutoplay()              .Self();  
       // 禁止頁面訪問攝像頭          builder.AddCamera()              .None();  
       // 允許頁面從自身源加載加密媒體          builder.AddEncryptedMedia()              .Self();  
       // 允許頁面全屏模式,對所有源          builder.AddFullscreen()              .All();  
       // 禁止頁面訪問地理位置          builder.AddGeolocation()              .None();  
       // 禁止頁面訪問陀螺儀          builder.AddGyroscope()              .None();  
       // 禁止頁面訪問磁力計          builder.AddMagnetometer()              .None();  
       // 禁止頁面訪問麥克風          builder.AddMicrophone()              .None();  
       // 禁止頁面訪問MIDI設備          builder.AddMidi()              .None();  
       // 禁止頁面執行支付請求          builder.AddPayment()              .None();  
       // 禁止頁面使用畫中畫模式          builder.AddPictureInPicture()              .None();  
       // 禁止頁面訪問揚聲器          builder.AddSpeaker()              .None();  
       // 禁止頁面執行同步XHR請求          builder.AddSyncXHR()              .None();  
       // 禁止頁面訪問USB設備          builder.AddUsb()              .None();  
       // 禁止頁面訪問VR設備          builder.AddVR()              .None();  
       // 添加自定義功能策略,例如限制Flash插件的使用          builder.AddCustomFeature("plugin-types", "application/x-shockwave-flash");  
       // 添加自定義的iframe策略,允許從自身源或指定URL加載iframe          builder.AddCustomFeature("iframe")              .Self()              .For("http://testUrl.com");      });  
// 應用前面定義的安全策略頭部到應用程序響應中  app.UseSecurityHeaders(policyCollection);  

 

04

項目地址

https://github.com/andrewlock/NetEscapades.AspNetCore.SecurityHeaders

- End -


該文章在 2024/9/4 15:00:18 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved