asp.net core webApi 参数保护

Intro

asp.net core data protection 扩展,基于 IDataProtector 扩展的数据保护组件,自动化的实现某些参数的保护

ParamsProtection

ParamsProtection 是为了保护 asp.net core webapi 项目的某些参数而设计的,也可以用来做一定程度上的反爬虫。

GetStarted

安装 nuget 包 WeihanLi.DataProtection

通过示例项目查看更多详细信息

640?wx_fmt=png

跑起来示例项目,你可以直接在 sample 项目下运行 dotnet run 命令,在浏览器中访问 /api/values 路径,你会得到类似以下的响应结果

640?wx_fmt=png

原来的业务代码里你什么都不需要做,还是直接返回原来的内容即可,原来的返回内容如下:

640?wx_fmt=png

因为在启动的时候已经设置了 id 参数应该被保护,所以当你访问 /api/values/{id} 这个地址的时候,如果没有设置 AllowUnprotectedParams 为 true 的话,直接使用原始的 int 类型的 id 去访问就会得到一个 4xx(默认是412) 状态码的响应,如果用从 /api/values 返回的 id 的值去访问就会正常的拿到响应。

除此之外你可以设置被保护的值的过期时间,通过设置一个比较短的过期时间来一定程度上的反爬虫,有个不太友好的地方就是可能会一定程序上的影响用户体检,如果用户打开一个页面长期没有操作就可能会导致某些操作可能会失败,需要用户重新操作。

你也可以是 POST 或 PUT 请求中使用被保护的值,如果被保护的值已经过期,你会从服务得到一个 4xx(默认 412) 的响应。

More

你可以设置更多参数来更适合你的使用

640?wx_fmt=png

你可以改变一些值来改变参数保护模式:

  • 设置 Enabled 为 false 以禁用参数保护

  • 修改 ProtectorPurpose 的值以改变 DataProtector 的 purpose

  • 设置 AllowUnprotectedParams 为 true 以允许原始参数的访问

  • 设置 InvalidRequestStatusCode 的值来改变不合法参数访问时响应的 Status Code

  • 修改 ExpiresIn 的值以改变已经保护的参数的值的过期时间

  • 设置 ProtectParams 的值来指定要进行参数保护的参数名称

Contact

Contact me: weihanli@outlook.com

原文地址:https://www.cnblogs.com/weihanli/p/webapi-params-protection.html


 
 

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值