LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SecurityHeaders:為.Net網(wǎng)站添加安全標(biāo)頭,讓W(xué)eb更加安全、避免攻擊!

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

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

01

項目簡介

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

02

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

03

使用方法

1、默認(rèn)安全頭

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

3、移除服務(wù)器響應(yīng)標(biāo)頭

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

4、內(nèi)容安全策略

// 創(chuàng)建一個HeaderPolicyCollection實例,用于定義和管理HTTP響應(yīng)的安全頭  var policyCollection = new HeaderPolicyCollection()      .AddContentSecurityPolicy(builder =>      {          // 添加策略以自動將不安全的請求(如HTTP)升級到HTTPS          builder.AddUpgradeInsecureRequests(); // upgrade-insecure-requests  
       // 阻止所有混合內(nèi)容(HTTPS頁面中的HTTP資源)          builder.AddBlockAllMixedContent(); // block-all-mixed-content  
       // 指定用于接收CSP違規(guī)報告的URI          builder.AddReportUri() // report-uri: https://report-uri.com              .To("https://report-uri.com");  
       // 定義默認(rèn)的源策略,僅允許加載當(dāng)前來源和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() // 允許與當(dāng)前源建立連接              .From("http://testUrl.com"); // 允許與http://testUrl.com建立連接  
       // 定義允許加載的字體源          builder.AddFontSrc() // font-src 'self'              .Self(); // 僅允許加載來自相同源的字體  
       // 禁止通過<object>、<embed>或<applet>標(biāo)簽加載資源          builder.AddObjectSrc() // object-src 'none'              .None(); // 禁用<object>、<embed>或<applet>  
       // 定義表單動作源,即限制哪些源可以處理表單提交          builder.AddFormAction() // form-action 'self'              .Self(); // 僅允許表單提交到當(dāng)前源  
       // 定義圖片資源只能來自HTTPS源          builder.AddImgSrc() // img-src https:              .OverHttps(); // 僅允許HTTPS協(xié)議的圖片資源  
       // 定義腳本資源策略,允許加載來自相同源的腳本,允許內(nèi)聯(lián)腳本和eval,并報告樣本          builder.AddScriptSrc() // script-src 'self' 'unsafe-inline' 'unsafe-eval' 'report-sample'              .Self() // 允許加載來自相同源的腳本              .UnsafeInline() // 允許內(nèi)聯(lián)腳本              .UnsafeEval() // 允許使用eval()等函數(shù)              .ReportSample(); // 報告腳本樣本以供審查  
       // 定義樣式資源策略,允許加載來自相同源的樣式,并啟用嚴(yán)格動態(tài)檢查          builder.AddStyleSrc() // style-src 'self' 'strict-dynamic'              .Self() // 允許加載來自相同源的樣式              .StrictDynamic(); // 啟用嚴(yán)格動態(tài)檢查  
       // 定義媒體資源只能來自HTTPS源          builder.AddMediaSrc() // media-src https:              .OverHttps(); // 僅允許HTTPS協(xié)議的媒體資源  
       // 定義可以嵌入當(dāng)前頁面的框架的源,此處禁用所有框架嵌入          builder.AddFrameAncestors() // frame-ancestors 'none'              .None(); // 禁止任何源嵌入當(dāng)前頁面  
       // 定義基準(zhǔn)URI,限制頁面內(nèi)基礎(chǔ)URI(如<base>標(biāo)簽)的來源          builder.AddBaseUri() // base-uri 'self'              .Self(); // 僅允許基礎(chǔ)URI與當(dāng)前源相同  
       // 定義可以嵌入<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、權(quán)限策略

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

 

04

項目地址

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

- End -


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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲欧美一区二区三区久久 | 日韩AV综合AV一区 | 日韩一区二区三区精品视频 | 中文国产特黄特色在线视频 | 欧美日韩精品久久久久免费看 | 在线看国产国语三级在线看 |