asp.net core下的如何给网站做安全设置

news/2024/5/10 4:59:03/文章来源:https://blog.csdn.net/weixin_33788244/article/details/94695536

首先,我们来看下stack overflow网站的请求头文件:

可以看到一些我们熟悉或是陌生的HTTP头部文件字段。
在这里我们在对HTTP输入流的头部文件中,做一些基本的防护。首先要明确,既然我们是对HTTP头部做处理,那么就需要在Startup.cs类的
Configuration方法中做处理,因为这里就是处理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接口做一个中间件的扩展方法:

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

封装好相关的安全类:

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()
);

然后我们浏览一下网页,就可以在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

还有一个就是CSRF的防护,如果之前你用过ASP.NET MVC,在最基本的MVC模板中,可能你会留意到已有的cshtml页面中的form表单有这么一句:

@Html.AntiForgeryToken()

这就是微软在MVC框架中为我们提供的防护CSRF的方法。我们在表单中直接使用上面那句代码就可以了,然后在表单提交的Action方法中:

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

使用[ValidateAntiForgeryToken]属性,来验证CSRF。


参考链接:
How to add security headers in ASP.NET Core using custom middleware(如何使用自定义中间件在ASP.NET Core中添加安全标头)

初探CSRF在ASP.NET Core中的处理方式

代码地址:
https://github.com/RyanOvO/aspnetcore-fileup-demo

转载于:https://www.cnblogs.com/zhiyong-ITNote/p/9240633.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_780801.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Nginx的负载均衡网站架构

操作环境&#xff1a;VMware Fusion 操作系统&#xff1a;Centos6 实验架构设计图及实现&#xff1a;实验说明&#xff1a;Nginx服务器作为Web前端&#xff0c;当接收到用户的Web访问请求时&#xff0c;将请求转发 给内部真正的WEB服务器。Nginx具有两个网卡&#xff0c;一个网…

psn请验证您不是机器人_机器人模仿人类难?网站验证码是如何区分人类和机器的?...

为了避免注册垃圾用户以及盗取数据(撞库)&#xff0c;大多数网站都会用验证码来阻止机器人登陆&#xff0c;虽然验证码让很多用户感到厌烦&#xff0c;但它成功地阻挡了绝大多数机器人&#xff0c;也在保护我们数据的安全。那么验证码是怎么区分人类和机器人(电脑程序)的呢&…

网站Web业务架构从小到大演变

有一天&#xff0c;我突发奇想创建了一个站点&#xff0c;基于 LNMP 架构&#xff0c;起初只有我自己访问&#xff0c;后来因为我点儿正&#xff0c;访问量越来越大&#xff0c;所以最终导致下面的架构演变。 1、单台机器 单台机器因为只是一个小站&#xff0c;访问量一天也没有…

网站时常出现too many connection的错误

安装了一个程序&#xff0c;大访问量测试的时候发现竟然连接不上数据库了&#xff0c;仔细检查发现MySQL数据库出现1040错误&#xff0c;提示“too many connections”。那么改如何解决这个问题呢&#xff1f;其实MySQL默认的最大连接数为100&#xff0c;可能在大访问量的时候造…

什么是域名?什么网站名?什么是URL?

2019独角兽企业重金招聘Python工程师标准>>> 搬运自:https://jingyan.baidu.com/article/2c8c281df0afd00008252aa7.html 转载于:https://my.oschina.net/tanghaoo/blog/3006600

【SEO技巧】用户需求不等于用户真正需求

大家都知道网站要做得好&#xff0c;首先的前提 是要分析 用户需求&#xff0c;只有用户需求分析正确了才能将网站真正的做起来&#xff0c;俗话说的好知己知彼才能百战不殆。 什么是用户需求分析&#xff1a; 用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作…

Android 学习论坛博客及网站推荐

出处&#xff1a;http://blog.csdn.net/tangcheng_ok/article/details/6909049 一、博客推荐 1&#xff09;http://blog.csdn.net/android_tutor &#xff08;Android开发入门基础&#xff0c;高级进阶&#xff09; 2&#xff09;http://blog.csdn.net/hellogv &#xff08;入…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

小公司如何部署实施Linux集群网站

出处&#xff1a;http://andrewyu.blog.51cto.com/1604432/710049 作者&#xff1a;抚琴煮酒 标签&#xff1a;小企业 Linux集群 小公司原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://…

蚂蚁变大象:浅谈常规网站是如何从小变大的(一)

http://zgwangbo.blog.51cto.com/4977613/849529 标签&#xff1a;架构 web原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zgwangbo.blog.51cto.com/4977613/849529【 前一段时间写了关…

为什么很多网站都去除oracle?

一个字&#xff0c;贵。你可以去Oracle官网看看Oracle的报价&#xff0c;一套Oracle database动辄几十万&#xff0c;或者按年付费&#xff0c;一年大几万&#xff0c;这还是一个CPU的价格。 碰到集群你就等着哭吧。人员培训也是问题。Mysql很多人学数据库的时候多多少少都会用…

大型网站架构演化发展历程

原文&#xff1a;http://www.cnblogs.com/JustOnly/p/4899615.html 前面已经描述了大型网站系统的特点&#xff0c;而对一个大型网站系统&#xff0c;其架构也是重要的一个环节。 大型网站技术主要的挑战来自于庞大的用户、高并发以及海量的数据这三个方面。大型网站的形成就像…

发现了好的网站

今天在查找DNN&#xff0c;以及rainbow的资料时&#xff0c;发现了几个好的网站&#xff0c;并在上边注册&#xff1b;www.dnnskins.com, www.asp.net www.codeproject.com 通过查看&#xff0c;对dnn,rainbow有了新的认识转载于:https://www.cnblogs.com/mengfan/arch…

影响我的网站速度的因素

测试几个主网页总结出影响我的网页速度的几个因素&#xff1a; 一级因素&#xff1a; ①启动压缩 ②浏览器缓存 二级因素&#xff1a; ①提供压缩后的图片 找到原因下面就好办了&#xff0c;对症下药&#xff0c;下面将一个个解决。 解决办法&#xff1a; 开启压缩功能-…

别找了!这5个图片素材网站分享给你,每一个都资源满满!

职场中的工作日常就是找素材&#xff0c;但是需要找到合适的图片素材真的是难上加难。废话就不多说了&#xff0c;今天小编就给大家分享5个图片素材网站&#xff0c;资源真的超级丰富&#xff01;有需要的小伙伴记得收藏&#xff01;Pixabay链接&#xff1a;http://pixabay.com…

大型网站架构系列:分布式消息队列

一、消息队列概述 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题。实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境&#xff0…

一个母婴电子商务网站的大数据平台及机器学习实践

母婴相对一般的电子商务网站有一些特点&#xff1a;第一个特点是商品周期短&#xff0c;在母婴网站上的商品&#xff0c;在线的时间不会超过5-7天&#xff0c;第二个是用户需求的变化快&#xff0c;在母婴行业&#xff0c;可能是用户的需求变化最快的领域&#xff0c;比如是用户…

大型网站架构技术一览

网站系统架构层次如下图所示&#xff1a; 1.前端架构 前端指用户请求到达网站应用服务器之前经历的环节&#xff0c;通常不包含网站业务逻辑&#xff0c;不处理动态内容。 浏览器优化技术 并不是优化浏览器&#xff0c;而是通过优化响应页面&#xff0c;加快浏览器页面的加载…

大型网站图片服务器架构的演进

在主流的Web站点中&#xff0c;图片往往是不可或缺的页面元素&#xff0c;尤其在大型网站中&#xff0c;几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中&#xff0c;也会历经很多曲折甚至是血泪教训&#xff08;尤其是早期规划不足&am…

大型网站架构系列:分布式消息队列

以下是消息队列以下的大纲&#xff0c;本文主要介绍消息队列概述&#xff0c;消息队列应用场景和消息中间件示例&#xff08;电商&#xff0c;日志系统&#xff09;。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考&#xff08;推荐&…