欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

asp.net core下給網(wǎng)站做安全設(shè)置的方法詳解

 更新時(shí)間:2018年07月02日 08:44:22   作者:又見阿郎  
這篇文章主要給大家介紹了關(guān)于asp.net core下給網(wǎng)站做安全設(shè)置的相關(guān)資料,文章通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文主要介紹了關(guān)于asp.net core給網(wǎng)站做安全設(shè)置的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧

設(shè)置方法如下

首先,我們來看下stack overflow網(wǎng)站的請(qǐng)求頭文件:


可以看到一些我們熟悉或是陌生的HTTP頭部文件字段。

在這里我們?cè)趯?duì)HTTP輸入流的頭部文件中,做一些基本的防護(hù)。首先要明確,既然我們是對(duì)HTTP頭部做處理,那么就需要在Startup.cs類的

Configuration方法中做處理,因?yàn)檫@里就是處理HTTP輸入流的。

首先做一些基本的處理,比如中間件和基本的類:

public class SecurityHeadersPolicy 
{
 public IDictionary<string, string> SetHeaders { get; }
  = new Dictionary<string, string>();
 
 public ISet<string> RemoveHeaders { get; }
 = new HashSet<string>();
}

這里的頭部信息是我們定義好的,用來增加或是刪除頭部信息,然后就是我們的中間件:

public class SecurityHeadersMiddleware 
{
 private readonly RequestDelegate _next;
 private readonly SecurityHeadersPolicy _policy;

 public SecurityHeadersMiddleware(RequestDelegate next, SecurityHeadersPolicy policy)
 {
 _next = next;
 _policy = policy;
 }

 public async Task Invoke(HttpContext context)
 { 
 IHeaderDictionary headers = context.Response.Headers;

 foreach (var headerValuePair in _policy.SetHeaders)
 {
  headers[headerValuePair.Key] = headerValuePair.Value;
 }

 foreach (var header in _policy.RemoveHeaders)
 {
  headers.Remove(header);
 }

 await _next(context);
 }
}

基于IApplicationBuilder接口做一個(gè)中間件的擴(kuò)展方法:

public static class MiddlewareExtensions 
{
 public static IApplicationBuilder UseSecurityHeadersMiddleware(this IApplicationBuilder app, SecurityHeadersBuilder builder)
 {
 SecurityHeaderPolicy policy = builder.Build();
 return app.UseMiddleware<SecurityHeadersMiddleware>(policy);
 }
}

封裝好相關(guān)的安全類:

public class SecurityHeadersBuilder 
{
 private readonly SecurityHeadersPolicy _policy = new SecurityHeadersPolicy();

 public SecurityHeadersBuilder AddDefaultSecurePolicy()
 {
 AddFrameOptionsDeny();
 AddXssProtectionBlock();
 AddContentTypeOptionsNoSniff();
 AddStrictTransportSecurityMaxAge();
 RemoveServerHeader();

 return this;
 }

 public SecurityHeadersBuilder AddFrameOptionsDeny()
 {
 _policy.SetHeaders[FrameOptionsConstants.Header] = FrameOptionsConstants.Deny;
 return this;
 }

 public SecurityHeadersBuilder AddFrameOptionsSameOrigin()
 {
 _policy.SetHeaders[FrameOptionsConstants.Header] = FrameOptionsConstants.SameOrigin;
 return this;
 }

 public SecurityHeadersBuilder AddFrameOptionsSameOrigin(string uri)
 {
 _policy.SetHeaders[FrameOptionsConstants.Header] = string.Format(FrameOptionsConstants.AllowFromUri, uri);
 return this;
 }

 public SecurityHeadersBuilder RemoveServerHeader()
 {
 _policy.RemoveHeaders.Add(ServerConstants.Header);
 return this;
 }

 public SecurityHeadersBuilder AddCustomHeader(string header, string value)
 {
 _policy.SetHeaders[header] = value;
 return this;
 }

 public SecurityHeadersBuilder RemoveHeader(string header)
 {
 _policy.RemoveHeaders.Add(header);
 return this;
 }

 public SecurityHeadersPolicy Build()
 {
 return _policy;
 }
}

最后注入到HTTP的輸入流中:

app.UseSecurityHeadersMiddleware(new SecurityHeadersBuilder() 
.AddDefaultSecurePolicy()
);

然后我們?yōu)g覽一下網(wǎng)頁,就可以在HTTP的頭部信息中看到:

HTTP/1.1 200 OK 
Content-Type: text/html; charset=utf-8 
X-Frame-Options: DENY 
X-XSS-Protection: 1; mode=block 
X-Content-Type-Options: nosniff 
Strict-Transport-Security: max-age=31536000 
X-Powered-By: ASP.NET

還有一個(gè)就是CSRF的防護(hù),如果之前你用過ASP.NET MVC,在最基本的MVC模板中,可能你會(huì)留意到已有的cshtml頁面中的form表單有這么一句:

@Html.AntiForgeryToken()

這就是微軟在MVC框架中為我們提供的防護(hù)CSRF的方法。我們?cè)诒韱沃兄苯邮褂蒙厦婺蔷浯a就可以了,然后在表單提交的Action方法中:

[ValidateAntiForgeryToken]
[HttpPost]
public IActionResult AntiForm(string message)
{
return Content(message);
}

使用[ValidateAntiForgeryToken]屬性,來驗(yàn)證CSRF。

參考鏈接:

代碼地址:

https://github.com/RyanOvO/aspnetcore-fileup-demo

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • .NetCore之接口緩存的實(shí)現(xiàn)示例

    .NetCore之接口緩存的實(shí)現(xiàn)示例

    這篇文章主要介紹了.NetCore之接口緩存的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用pdfbox實(shí)現(xiàn)pdf文本提取和合并功能示例

    使用pdfbox實(shí)現(xiàn)pdf文本提取和合并功能示例

    這篇文章主要介紹了使用pdfbox實(shí)現(xiàn)pdf文本提取和合并功能示例,大家參考使用吧
    2014-01-01
  • Visual Studio 2010 前端開發(fā)工具/擴(kuò)展/插件推薦

    Visual Studio 2010 前端開發(fā)工具/擴(kuò)展/插件推薦

    這篇文章主要介紹了一組我喜愛的擴(kuò)展和工具能讓Visual Studio在web開發(fā)方面更簡(jiǎn)單,我只是集中在我安裝和使用過的一些工具,如果你還有其它好用的的話,請(qǐng)?jiān)谶@里留言。
    2016-06-06
  • Visual Studio 2017通過SSH調(diào)試Linux上.NET Core

    Visual Studio 2017通過SSH調(diào)試Linux上.NET Core

    這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017通過SSH調(diào)試Linux 上.NET Core的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • ASP.NET MVC把表格導(dǎo)出到Excel

    ASP.NET MVC把表格導(dǎo)出到Excel

    這篇文章介紹了ASP.NET MVC把表格導(dǎo)出到Excel的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • ASP.NET中在不同的子域中共享Session的具體方法

    ASP.NET中在不同的子域中共享Session的具體方法

    這篇文章介紹了ASP.NET中在不同的子域中共享Session的具體方法,有需要的朋友可以參考一下
    2013-10-10
  • .NET使用結(jié)構(gòu)體替代類提升性能優(yōu)化的技巧

    .NET使用結(jié)構(gòu)體替代類提升性能優(yōu)化的技巧

    這篇文章主要介紹了.NET使用結(jié)構(gòu)體替代類提升性能優(yōu)化的技巧,使用結(jié)構(gòu)體替代類有什么好處呢?在什么樣的場(chǎng)景需要使用結(jié)構(gòu)體來替代類呢?今天的文章為大家一一解答,需要的朋友可以參考下
    2022-05-05
  • ASP.NET 謹(jǐn)用 async/await

    ASP.NET 謹(jǐn)用 async/await

    這篇文章主要介紹了ASP.NET 應(yīng)用程序?qū)嶋H使用過程中的一些總結(jié), 包括 異常捕獲 、 死鎖 、 應(yīng)用程序崩潰 ,實(shí)際使用過程中一不注意就可能掉坑里了
    2018-01-01
  • C#反射技術(shù)的簡(jiǎn)單操作(讀取和設(shè)置類的屬性)

    C#反射技術(shù)的簡(jiǎn)單操作(讀取和設(shè)置類的屬性)

    反射的作用想必大家都知道了吧,少量屬性的自動(dòng)化操作手動(dòng)添加幾下當(dāng)然是沒有問題的,但是屬性數(shù)量較多的時(shí)候敲起這些繁鎖的代碼可以困了,再說對(duì)擴(kuò)展和維護(hù)性造成很多的不遍,以下代碼中如不能直接使用請(qǐng)?zhí)砑觰sing System.Text;的引用。
    2011-01-01
  • ASP.NET?MVC開發(fā)接入微信公共平臺(tái)

    ASP.NET?MVC開發(fā)接入微信公共平臺(tái)

    這篇文章主要為大家介紹了微信平臺(tái)開發(fā)ASP.NET?MVC接入微信公共平臺(tái)實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評(píng)論