手机版

asp.net核心下给网站做安全设置的方法详解

时间:2021-08-31 来源:互联网 编辑:宝哥软件园 浏览:

前言

本文主要介绍了关于ASP。网核心给网站做安全设置的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

设置方法如下

首先,我们来看下栈溢出网站的请求头文件:

可以看到一些我们熟悉或是陌生的超文本传送协议头部文件字段。

在这里我们在对超文本传送协议输入流的头部文件中,做一些基本的防护。首先要明确,既然我们是对超文本传送协议头部做处理,那么就需要在Startup.cs类的

配置方法中做处理,因为这里就是处理超文本传送协议输入流的。

首先做一些基本的处理,比如中间件和基本的类:

公共类SecurityHeadersPolicy { public IDictionaryString,string SetHeaders { get }=new dictionaryString,string();public ISetstring RemoveHeaders { get;}=new HashSetString();}这里的头部信息是我们定义好的,用来增加或是删除头部信息,然后就是我们的中间件:

公共类securityheadersmidleware { private readonly request delegate _ next;private readonly SecurityHeadersPolicy _ policy;公共安全阅读器中间件(请求委托next,安全阅读器策略策略){ _ next=next_ policy=policy}公共异步任务调用(HttpContext上下文){ IHeaderDictionary heads=context .响应。标题;foreach(var _ policy中的头值对).SetHeaders){ headers[header值对.Key]=headerValuePair .价值;} foreach (var header in _policy .移除标头){标头.移除(表头);} await _ next(上下文);}}基于IApplicationBuilder接口做一个中间件的扩展方法:

公共静态类MiddlewareExtensions {公共静态IApplicationBuilder usesecurityheadersmidleware(此IApplicationBuilder应用程序,SecurityHeadersBuilder builder){ SecurityHeaderPolicy=builder .build();返回应用程序. usemiddlewarecurityheader中间件(策略);}}封装好相关的安全类:

公共类安全标头生成器{ private readonly security heads policy _ policy=new security heads policy();公共安全标头生成器AddDefaultSecurePolicy(){ addframeoptions dny();addxssprprotectblock();addcontenttypeoptions snow snow sniff();addstricturetransportsecuritymaxage();RemoveServerHeader();归还这个;}公共安全标头生成器addframeoptions dny(){ _ policy .SetHeaders[frameoptions常量.页眉]=框架选项常量。否认;归还这个;}公共安全标头生成器add frameoptions ssameorigin(){ _ policy .SetHeaders[frameoptions常量.页眉]=框架选项常量SameOrigin .归还这个;}公共安全headers builder addframeoptions ssameorigin(字符串uri) { _policy .SetHeaders[frameoptions常量.标题]=字符串。格式(框架选项持续时间. AllowFromUri,uri);归还这个;}公共安全标头生成器RemoveServerHeader(){ _ policy .删除标题。添加(服务器常量。表头);归还这个;}公共安全标头生成器AddCustomHeader(字符串头,字符串值){ _policy .SetHeaders[header]=值;归还这个;}公共安全标头生成器删除标头(字符串头){ _policy .删除标题。添加(标题);归还这个;}公共安全头策略Build(){ return _ policy;}}最后注入到超文本传送协议的输入流中:

应用程序.UseSecurityHeadersMiddleware(新的SecurityHeadersBuilder().AddDefaultSecurePolicy());然后我们浏览一下网页,就可以在超文本传送协议的头部信息中看到:

HTTP/1.1 200可以内容-键入:文本/html;字符集=utf-8 X-Frame-选项: DENY X-XSS-保护: 1;模式=块X-内容-类型-选项:不严格-传输-安全性:最大年龄=31536000 X-由: ASP提供动力。网还有一个就是跨站点请求伪造的防护,如果之前你用过ASP .NET MVC,在最基本的手动音量调节模板中,可能你会留意到已有的模板页面中的形式表单有这么一句:

@Html。这是微软为我们提供的在MVC框架下保护CSRF的方式。我们可以在表单中直接使用上面的代码,然后在表单提交的Action方法中:

[validateantiforytoken][httpset]public IActionResult AntiForm(字符串消息){return Content(消息);}使用[validateandforgerytoken]属性来验证CSRF。

参考链接:

如何使用定制中间件在ASP.NET芯增加安全头(如何使用定制中间件在ASP.NET芯增加安全头)ASP.NET芯码地址CSRF处理方式初探:

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

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

版权声明:asp.net核心下给网站做安全设置的方法详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。