Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使API仅可用于特定的web应用程序_Api_Security_Web Applications - Fatal编程技术网

使API仅可用于特定的web应用程序

使API仅可用于特定的web应用程序,api,security,web-applications,Api,Security,Web Applications,让我们设想以下场景:调用API的web应用程序。 由于web应用程序代码可以在web浏览器中访问,我们可以说任何人都可以复制其代码并开始调用我们的API,而我们无法检测它是否来自我们的web应用程序 如何防止它?非公共REST服务必须在每个API端点执行访问控制。单片应用程序中的Web服务通过用户身份验证、授权逻辑和会话管理来实现这一点。对于遵循RESTful风格组成多个微服务的现代体系结构来说,这有几个缺点 为了最小化延迟并减少服务之间的耦合,访问控制决策应该由REST端点在本地做出 用户身

让我们设想以下场景:调用API的web应用程序。 由于web应用程序代码可以在web浏览器中访问,我们可以说任何人都可以复制其代码并开始调用我们的API,而我们无法检测它是否来自我们的web应用程序


如何防止它?

非公共REST服务必须在每个API端点执行访问控制。单片应用程序中的Web服务通过用户身份验证、授权逻辑和会话管理来实现这一点。对于遵循RESTful风格组成多个微服务的现代体系结构来说,这有几个缺点

  • 为了最小化延迟并减少服务之间的耦合,访问控制决策应该由REST端点在本地做出
  • 用户身份验证应集中在颁发访问令牌的身份提供商(IdP)中
您还可以使用API密钥。API密钥可以减少拒绝服务攻击的影响。但是,当它们发布给第三方客户机时,它们相对容易妥协(如果您不打算这样做,那么密钥劫持应该不会有任何问题)

  • 对受保护端点的每个请求都需要API密钥
  • 如果请求传入太快,则返回429“太多请求”HTTP响应代码
  • 如果客户端违反使用协议,请撤消API密钥
  • 不要完全依赖API密钥来保护敏感、关键或高价值资源
你可以在网上阅读更多的好的安全实践


我希望这会有所帮助。

可以在客户端截获API密钥,以便攻击者可以轻松地重播消息。