在设计REST API或服务时,是否存在处理安全性(身份验证,授权,身份管理)的最佳实践? 在构建SOAP API时,您可以使用WS-Security作为指导,有关该主题的文献很多。我发现了有关保护REST端点的更少信息。 尽管我了解REST故意没有类似于WS- *的规范,但我希望最佳实践或推荐模式已经出现。 任何有关文件的讨论或链接将非常感激。 如果它很重要,我们将使用WCF和POX/JSON序列化消息来构建使用.NET Framework v3.5构建的REST API/Services。

Github上有一个很棒的清单: 的验证

  • 请勿使用Basic Auth使用标准认证(例如JWTOAuth)。
  • 不要在认证,代币生成,密码存储中重新发明轮子。使用标准。
  • 在登录中使用Max Retry和jail功能。
  • 在所有敏感数据上使用加密。
  • JWT(JSON Web令牌)

    • 使用一个随机的复杂键(JWT秘密)来让暴力破解令牌变得非常困难。
    • 不要从有效负载中提取算法。在后端强制执行算法(HS256或RS256)。
    • 尽可能缩短令牌到期时间(TTLRTTL)。
    • 不要在JWT有效载荷中存储敏感数据,它可以被轻松解码。
    • 的的OAuth

      • 始终验证redirect_uri服务器端是否只允许列入白名单的网址。
      • 总是尝试交换代码而不是代币(不允许response_type=token)。
      • 使用状态参数和随机散列来防止OAuth身份验证过程中的CSRF
      • 定义默认范围,并为每个应用程序验证范围参数。
      • 使用

        • 限制请求(Throttling)以避免DDoS /强力攻击。
        • 在服务器端使用HTTPS以避免MITM(中间人攻击)
        • 使用带SSL的HSTS标头来避免SSL Strip攻击。
        • 的输入

          • 根据操作使用适当的HTTP方法:GET(读取),POST(创建),PUT/PATCH(替换/更新)和DELETE(删除记录),如果请求的方法不是,则使用405 Method Not Allowed回应适合请求的资源。
          • 根据请求验证内容类型Accept标题(内容协商)以仅允许您支持的格式(例如application/xmlapplication/json等),并在406 Not Acceptable响应中回应(如果不匹配)。
          • 按照您接受的方式验证发布数据的content-type(例如,application/x-www-form-urlencodedmultipart/form-dataapplication/json等)。
          • 验证用户输入以避免常见漏洞(例如XSS,SQL注入,远程代码执行等)。
          • 请勿在网址中使用任何敏感数据(凭据,密码,安全令牌或API密钥),但请使用标准的Authorization标头。
          • 使用API​​网关服务启用缓存,Rate Limit策略(例如配额,尖峰捕捉,并发速率限制)以及动态部署API资源。
          • 的处理

            • 检查所有端点是否在身份验证后受到保护,以避免身份验证过程中断。
            • 应该避免用户自己的资源ID。使用/ me/orders而不是/ user/654321/orders。
            • 不要自动增加ID。改为使用UUID。
            • 如果您正在解析XML文件,请确保未启用实体解析以避免XXE(XML外部实体攻击)。
            • 如果您正在解析XML文件,请确保实体展开未启用,以通过指数实体展开攻击来避免十亿笑/ XML炸弹。
            • 使用CDN进行文件上传。
            • 如果您处理大量数据,请使用工作人员和队列尽可能在后台进行处理,并快速返回响应以避免HTTP阻止。
            • 不要忘记关闭 DEBUG 模式。
            • 的输出

              • 发送X-Content-Type-Options: nosniff标头。
              • 发送X-Frame-Options: deny标头。
              • 发送Content-Security-Policy: default-src'none'标头。
              • 移除指纹标头 - X-Powered-ByServerX-AspNet-Version等。
              • 如果您返回application/json,那么您的响应内容类型为application/json
              • 强制content-type作为回应。
              • 不要传回密码,密码,安全令牌等敏感数据。
              • 根据完成的操作返回正确的状态码。 (例如200 OK400 Bad Request401 Unauthorized405 Method Not Allowed等)。
 

https://oomake.com/question/731

保护REST API/Web服务的最佳实践的更多相关文章

  1. [转]在 Azure 云服务上设计大规模服务的最佳实践

    本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...

  2. Web前端优化最佳实践及工具集锦

    Web前端优化最佳实践及工具集锦 发表于2013-09-23 19:47| 21315次阅读| 来源Googe & Yahoo| 118 条评论| 作者王果 编译 Web优化Google雅虎P ...

  3. 从Uber微服务看最佳实践如何炼成?

    导读:Uber成长非常迅速,工程师团队快速扩充,据说Uber有2000名工程师,8000个代码仓库,部署了1000多个微服务.微服务架构是Uber应对技术团队快速增长,功能快速上线很出色的解决方案.本 ...

  4. restful api的10个最佳实践

    Web API在过去的几年里非常盛行,因为它有着语法简单.规范化和轻量级的优点,因为得到广泛的推崇,很多过往的技术手段都慢慢转换为使用Web API来开发.而Web API通常使用的设计方式是REST ...

  5. 【转】优化Web程序的最佳实践

    自动排版有点乱,看着蛋疼,建议下载中文PDF版阅读或阅读英文原文. Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践.他们为此进行了 一系列的实验.开发了各 ...

  6. Web前端开发最佳实践(7):使用合理的技术方案来构建小图标

    大家都对网站上使用的小图标肯定都不陌生,这些小图标作为网站内容的点缀,增加了网站的美观度,提高了用户体验,可是你有没有看过在这些网站中使用的图标都是用什么技术实现的?虽然大部分网站还是使用普通的图片实 ...

  7. web前端开发最佳实践笔记

    一.文章开篇 由于最近也比较忙,一方面是忙着公司的事情,另外一方面也是忙着看书和学习,所以没有时间来和大家一起分享知识,现在好了,终于回归博客园的大家庭了,今天我打算来分享一下关于<web前端开 ...

  8. [转] Web 前端优化最佳实践之 Mobile(iPhone) 篇

    原文链接:http://dbanotes.net/web/best_practices_for_speeding_up_your_web_site_server_mobile.html Web 前端优 ...

  9. 【社区公益】送《Web前端开发最佳实践》给需要的人

    算起来至今,我进入软件开发行业已经有11年之久.从最初的研究人工智能,到后来的Web开发,控件开发,直到现在纯粹的Web前端开发.虽然没有大的作品问世,但也是勤勤恳恳,踏实做事,低调做人.从来不吹牛逼 ...

随机推荐

  1. yum(Fedora和RedHat以及SUSE中的Shell前端软件包管理器)命令详解

    yum官方网站:http://yum.baseurl.org/ Fedora对于yum的介绍:http://fedoraproject.org/wiki/Yum yum(全称为 Yellow dog ...

  2. 「BZOJ 3270」博物馆「高斯消元」

    应该算高斯消元经典题了吧. 题意:一个无向连通图,有两个人分别在\(s,t\),若一个人在\(u\),每一分钟有\(p[u]\)的概率不动,否则随机前往一个相邻的结点,求在每个点相遇的概率 题解: 首 ...

  3. go语言实战教程之管理员查询功能、退出功能

    前面第10节课内容中已经学习开发完成了管理员登陆功能.本节课我们将继续学习开发完成管理员信息查询功能.管理员退出功能 管理员信息查询功能 请求及路由映射 管理员信息查询接口 接口名称:获取管理员信息. ...

  4. vuejs项目性能优化总结

    在使用elementUI构建公司管理系统时,发现首屏加载时间长,加载的网络资源比较多,对系统的体验性会差一点,而且用webpack打包的vuejs的vendor包会比较大.所以通过搜集网上所有对于vu ...

  5. Python之图片缩放功能实现

    这几天由于有项目在做,自己的学习部分然后没有很充足的时间,但是这些零碎的时间也是很宝贵的,所以还是继续学我的python,我很喜欢这个语言,因为简洁,开发环境简单,更多的事,功能灰常的强大,所以好多有 ...

  6. server2008 IIS7配置全过程(包括发布ASP网站)

    一.安装IIS 1.打开服务器管理器->角色->添加角色,选中WEB服务器(IIS),记得要把包括之后出现的ASP相关的东西都选中并安装,安装成功后,打开http://localhost/ ...

  7. silverlight browse information

    public class Browser { /// <summary> /// During static instantiation, only the Netscape flag i ...

  8. P3613 睡觉困难综合征 LCT+贪心+位运算

    \(\color{#0066ff}{ 题目描述 }\) 由乃这个问题越想越迷糊,已经达到了废寝忘食的地步.结果她发现--晚上睡不着了!只能把自己的一个神经元(我们可以抽象成一个树形结构)拿出来,交给D ...

  9. [C/C++语言标准] ISO C99/ ISO C11/ ISO C++11/ ISO C++14/ISO C++17 Downloads

    语言法典,C/C++社区人手一份,技术讨(hu)论(peng)必备 ISO IEC C99 https://files.cnblogs.com/files/racaljk/ISO_C99.pdf IS ...

  10. zabbix告警

    邮件告警分为两大步: 第一步:配置(配置又分为三小步) 发送邮件的用户 创建用户(添加上告警媒介) 给用户添加权限(在所有组里添加) 最后显示有读写权限才算成功!!! 告警媒介类型 创建媒介类型!一般 ...