用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它 (3)

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

 

HSTS (HTTP 严格的传输安全协议)

web应用通过使用特殊的响应header可以选择使用加强的安全协议OWASP(Open Web Application Security Project), HSTS(HTTP Strict Transport Security). 当所支持的浏览器接收到这个header的时候, 浏览器就会阻止任何通过HTTP到指定域名的通信, 会使用HTTPS代替. 同时它也会阻止从浏览提的提示框点击的HTTPS.

为实现这个只需要在Startup的Configure里使用:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

 

 一般不建议在开发环境使用Hsts, 因为浏览器极有可能会缓存HSTS 的header. 默认情况下, UseHsts会排除本地回路的地址.

UseHsts会排除下列回路宿主:

localhost : IPv4 回路地址.

127.0.0.1 : IPv4 回路地址.

[::1] : IPv6 回路地址.

可以在ConfigureServices方法里对它进行配置:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

这部分具体请查看文档: 

 

CORS 跨域请求

配置注册CORS需要在Startup的ConfigureServices方法完成:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

针对整个应用启用CORS需要在Configure方法里调用下面的方法:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

应该尽早的调用该方法, 以便在它后边注册的节点都可以被跨域访问.

这是第一种方法, 使用的是lambda表达式.

注意URL地址结尾不要有/, 它会引起错误.

这种方法使用的是CorsPolicyBuilder 类, 它拥有Fluent API, 可以串接方法调用:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

 

第二种方法是使用策略.

在ConfigureServices里配置好命名的策略:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

在Configure方法里使用该策略:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

另外也可以不适用UseCors(), 而是在下面这几种级别指定使用该策略:

Action级别:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

Controller级别:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

全局Controller级别:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

这么用的话, 需要禁用CORS策略就:

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

 

关于CORS的具体配置, 还是请参考官方文档: https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.1

 

Rate Limiting 速率限制

速率限制是指限制被允许的请求到API(或某个特定的资源)。这样就可以保护API,避免一些非正常使用的场景,例如网络爬虫或请求太多而导致API的性能严重下降,Dos和DDos。针对这点我们采取的节流策略是控制允许访问API的请求的频率/速率,它可以决定特定的请求是否被允许。

例如客户端只允许每小时有100个请求到达API,也可以按天计算,还可以带着IP地址一起限制。

响应的Header可以用来表示速率限制,但是这些Header并不是HTTP标准。这些header都以X-Rate-Limit开头。

X-Rate-Limit-Limit, 这个表示添加了限制并包含了限制的有效期。

X-Rate-Limit-Remaining,表示该客户还剩下多少个被允许的请求。

X-Rate-Limit-Reset,提供关于何时限制会被重置的时间信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjypp.html