HSTS (HTTP 严格的传输安全协议)
web应用通过使用特殊的响应header可以选择使用加强的安全协议OWASP(Open Web Application Security Project), HSTS(HTTP Strict Transport Security). 当所支持的浏览器接收到这个header的时候, 浏览器就会阻止任何通过HTTP到指定域名的通信, 会使用HTTPS代替. 同时它也会阻止从浏览提的提示框点击的HTTPS.
为实现这个只需要在Startup的Configure里使用:
一般不建议在开发环境使用Hsts, 因为浏览器极有可能会缓存HSTS 的header. 默认情况下, UseHsts会排除本地回路的地址.
UseHsts会排除下列回路宿主:
localhost : IPv4 回路地址.
127.0.0.1 : IPv4 回路地址.
[::1] : IPv6 回路地址.
可以在ConfigureServices方法里对它进行配置:
这部分具体请查看文档:
CORS 跨域请求
配置注册CORS需要在Startup的ConfigureServices方法完成:
针对整个应用启用CORS需要在Configure方法里调用下面的方法:
应该尽早的调用该方法, 以便在它后边注册的节点都可以被跨域访问.
这是第一种方法, 使用的是lambda表达式.
注意URL地址结尾不要有/, 它会引起错误.
这种方法使用的是CorsPolicyBuilder 类, 它拥有Fluent API, 可以串接方法调用:
第二种方法是使用策略.
在ConfigureServices里配置好命名的策略:
在Configure方法里使用该策略:
另外也可以不适用UseCors(), 而是在下面这几种级别指定使用该策略:
Action级别:
Controller级别:
全局Controller级别:
这么用的话, 需要禁用CORS策略就:
关于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,提供关于何时限制会被重置的时间信息。