WebApi的安全性解决方案

一、前言

  WebApi的小白想要了解一些关于WebApi安全性相关的问题,本篇文章是整理一些关于WebApi安全、权限认证的文章。

二、内容正文

 2.1 不进行验证

 客户端调用:http://api.xxx.com/getInfo?Id=value
如上,这种方式简单粗暴,在浏览器直接输入"http://api.xxx.com/getInfo?Id=value",即可获取到相关的信息了,但是这样的方式会存在很严重的安全性问题,没有进行任何的验证,大家都可以通过这个方法获取到产品列表,导致信息泄露。
那么我们就会有下面的疑问了:

  1. 如何验证调用者身份呢?
  2. 如何防止参数被篡改呢?
  3. 如何保证请求的唯一性?
  4. 如何保证请求的唯一性,防止请求被恶意攻击呢?

 2.2 使用TOKEN+签名认证

  原理如下:

  • 1.做一个认证服务,提供一个认证的WebApi,用户先访问它获取对应的Token

  • 2.用户拿着相应的Token以及请求的参数和服务器端提供的签名算法计算出签名后再去访问指定的Api

  • 3.服务器端每次接收到请求就获取对应用户的Token和请求参数,服务器端再次计算签名和客户端签名做对比,如果验证通过则正常访问相应的Api,验证失败则返回具体的失败信息。

参考链接:

 2.3 基于Owin OAuth

 使用OAuthClient Credential Grant授权方式,在服务端通过Authorization Server的一个实现成功发放了Access Token,并在客户端成功拿到了Access Token。在ASP.NET WebApi中启用OAuth的Access Token验证非常简单,只需在相应的Controller或Action加上[Authorize]标记。在ASP.NET中基于Owin OAuth`
参考文章:

  2.4 使用签名来保证ASP.NET MVC 和 WebApi的接口安全

 给每个http请求添加一个签名,服务端来验证签名的合法性,如果签名合法则执行响应的操作,如果签名非法则直接拒绝请求。
签名算法

签名算法一般都使用Hash散列算法,常用的有MD5,SHA系列算法。这些算法可以根据不同的输入,计算出不同的结果,而且碰撞的概率很低。
签名算法跟加密算法不是一回事。HMAC SHA作为一种更加安全的签名算法,使用一个Key来影响签名的结果。这样同样的输入配合不同的Key可以得出不同的签名,更加安全。

签名参数

可以用Http请求的queryString然后加上时间戳还有随机数来作为签名的参数。

参考链接:

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastAPI 是一个基于 Python 的现代、快速(高性能)的 Web 框架,它提供了一些内置的安全性功能来保护应用程序免受常见的 Web 攻击。下面是一些 FastAPI安全性问题和相应的解决方案: 1. 跨站脚本攻击(XSS):XSS 攻击是指攻击者通过在网页中注入恶意脚本来获取用户敏感信息或执行恶意操作。FastAPI 使用 Jinja2 模板引擎来自动转义用户输入,以防止 XSS 攻击。此外,使用 FastAPI 的模型验证功能可以过滤和验证用户输入,从而进一步减少 XSS 攻击的风险。 2. 跨站请求伪造(CSRF):CSRF 攻击是指攻击者通过伪造用户的身份执行未经授权的操作。FastAPI 提供了 CSRF 保护中间件,可以生成和验证 CSRF 令牌,以确保请求来自合法的来源。 3. 认证和授权:FastAPI 支持多种认证和授权方式,包括基于令牌的身份验证(如 JWT)、OAuth2 和 OpenID Connect。你可以使用 FastAPI 的内置认证和授权功能,或者集成其他第三方库来实现更复杂的认证和授权需求。 4. 敏感数据泄露:FastAPI 提供了一些内置的安全性功能来保护敏感数据的泄露,如请求体和响应体的自动验证和转换、密码哈希和加密等。你可以使用这些功能来确保敏感数据在传输和存储过程中的安全性。 5. 日志和监控:FastAPI 提供了强大的日志和监控功能,可以记录和监控应用程序的运行状态,包括请求和响应的详细信息。这些功能可以帮助你及时发现和应对潜在的安全问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值