re:Invent全球大会引领风向重塑未来 了解详情
写点什么

处理 REST 服务安全

  • 2010 年 4 月 06 日
  • 本文字数:1203 字

    阅读完需:约 4 分钟

随着安全成为了 SOA 实现的主要宗旨之一,以及 REST 迅速成为流行的 SOA 实现方案之一,关于 REST 安全成为了及时的话题。根据 Chris Comerford 以及 Pete Soderling 的说法,REST 开发对于安全的处理还不够:

  • REST 没有预定义的安全方法来让开发者定义它们自己的,同时
  • 通常,开发者急于得到…所部署的服务并不像对待 web 应用一样用同样的勤劳对待他们。

Comerford 与 Soderling 继续进行了解释,因为 REST 是基于 HTTP 的,而 REST 服务有跟标准的 web 应用一样的容易受攻击的倾向。包括被破坏的验证,注入攻击,跨站点的脚本以及跨站点的请求伪造。此外,REST 服务还有其独特的安全弱点,例如:

  • Mashup 相关的问题: > …一个从多个 API 拉取数据的 mashup 可能会要求用户名和密码。而验证终端用户的授信取决于 mashup 的提供者。终端用户必须相信 mashup 的提供者不会偷窃 (或者由于疏忽而泄露) 他们的授信,而 API 的提供者也必须相信 mashup 的提供者可以审核和验证这一用户的帐号,不是一个黑客或者恶意的用户。
  • 不成熟的草根协议: > OAuth 1.0…容易遭受会话完成攻击,并且可能造成让攻击者盗取 API 终端用户个人身份的结果。

幸运的是,许多 HTTP 安全实践都可以有效的应用于 REST 服务,Comerford 和 Soderling 推荐遵循如下的几条规则:

  • 为你的 API 启用其它任何你的组织已部署的 web 应用同样的安全机制。比如说,如果你在 web 前端过滤 XSS,你必须对你的 API 也这样做,最好是使用同样的工具。
  • 不要使用你自己的安全。使用那些被互审过测试过的框架或现有的包…
  • 除非你的 API 是一个免费的,只读的公开 API,否则不要使用单一的基于密钥的验证。这不够,需要加上密码要求。
  • 不要放过未加密的静态密钥。如果你使用基本的 HTTP 并且在线路上发送的,请加密。
  • 理想的情况下,使用基于哈布的消息验证码 (HMAC),因为它最安全。

K. Scott Morrison 进一步阐释了与 REST 安全相关的事务:

REST 缺乏良好表达的安全模型…由于它草根的天性,在安全方面往往受到忽视——“像 web 一样做就好了”,这样当然没有任何好处…REST 风格的流行要归因于它的简单和快速实现,特别是当面对让人兴趣全无的复杂性以及对工具要求极高的 WS-* 栈的时候。可以想象得到为了向完成应用而全力冲刺,安全相关的问题自然而然的就被忽视或者完全忘掉了。

Morrison 同时再次肯定了 REST 服务可以做到安全,并且展示了 Comerford 以及 Soderling 的部分推荐可以如何利用 SecureSpan 网关来实现,通过配置策略,可以保证对于服务的访问要求使用基于组成员 SSL 以及授权服务访问。此外,SecureSpan 可以配置而实现扫描跨站点,PHP 以及 shell 注入攻击。

REST 不像 WS* 那样指定了定义良好的专为 web 服务构建的独立于协议的安全模型,目前它并没有自己的安全模型。作为代替,现在的 REST 安全最佳实践是利用了现有的 HTTP 安全实现方案。这是否够用呢?只有时间知道答案。

查看英文原文: Dealing with REST Services Security

2010 年 4 月 06 日 12:576805
用户头像

发布了 133 篇内容, 共 28.8 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战营 - 模块 2- 作业

carl

架构实战营

阿里巴巴架构师王小瑞“墙裂”推荐:RocketMQ核心实战原理

Java架构师迁哥

工业互联网的脖子被卡死了?

浪潮云

工业互联网

一个CURD三年的Java程序员刷完这份《阿里面试指南(恒山版)》,居然斩获了十七个offer

Java架构之路

Java 程序员 架构 面试 编程语言

GitHub持续霸榜!2021年Java核心知识:面试突击版

Java架构之路

Java 程序员 架构 面试 编程语言

自学Java走进阿里,仅用了六个月,他是怎么做到的?

Java架构师迁哥

阿里总结出Java九大核心专题,1159页内容,吃透后我上个月砍下5个大厂Offer!

Java架构追梦

Java 阿里巴巴 架构 面试 九大核心专题

每天一个 Linux 命令(1):cd

民工哥

Linux 运维

硬核!阿里内部这份《Java面试核心知识手册》在Github上已获赞高达89.7K!

Java架构之路

Java 程序员 架构 面试 编程语言

全国沿海港口首个区块链木材业务服务平台上线试运行,“区块链+港口”撬动数千万元“福利”

CECBC

港口

当造车成为风潮,谁帮助“造车党”连接未来?

脑极体

面试官:聊一聊SpringBoot服务监控机制

AI乔治

Java spring 架构 微服务 springboot

canvas小球绕斜椭圆轨迹运动

空城机

JavaScript 大前端 canvas 4月日更

一份完美的阿里开源Java面试宝典,Github上star数已30K+

Java架构师迁哥

卧槽,误删数据库了,会被开除吗?

AI乔治

Java 数据库 sql 架构 SQL语法

聪明人的训练(十四)

Changing Lin

4月日更

一篇文章了解CI/CD管道全流程

禅道项目管理

DevOps 持续集成 持续交付

代码回现 | 如何实现交易反欺诈?

VoltDB

数据分析 金融科技 VoltDB

2021金三银四:狂刷398道Java最新MySQL笔记;成功收获9个Offer

比伯

Java MySQL 编程 架构 计算机

小程序支持MQTT协议

风翱

小程序 websocket mqtt 4月日更

每天学一个 Linux 命令(2):shutdown

民工哥

Linux 程序员 运维

剖析6个MySQL死锁案例的原因以及死锁预防策略

北游学Java

Java MySQL 数据库 死锁

python列表转字符串

ベ布小禅

4月日更

从中国企业进入IEC最高决策机构,看科技领先的产业价值与用户价值

脑极体

理论 + 标准 + 工程 —— 阿里云视频云编码优化的思考与发现

阿里云视频云

阿里云 视频编码 视频算法 视频处理

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

Java架构追梦

Java 架构 字节跳动 面试

特权访问管理(PAM)即服务

龙归科技

云上接单不空跑 京东云助力“佬司机”为货运物流业降本增效

CECBC

京东云

如果以这样的方式,你愿参与到碳普惠行动中吗?

CECBC

区块链

portal认证-上线流程

箭上有毒

spring中让你眼前一亮的代码技巧

AI乔治

Java spring 架构 微服务

撑起瞬时千亿交易额的云数据库是怎么炼成的?

撑起瞬时千亿交易额的云数据库是怎么炼成的?

处理REST服务安全-InfoQ