写点什么

处理 REST 服务安全

  • 2010-04-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-04-06 12:577135
用户头像

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

关注

评论

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

新一代开源时序数据库TDengine有哪些优势?

TDengine

数据库 tdengine 开源 企业号九月金秋榜

软件测试 | 测试开发 | 接口测试框架实战(一) | Requests 与接口请求构造

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 测试人生 | 毕业2年未满,0经验拿下知名互联网企业30W 年薪,他是怎么做到的?

测吧(北京)科技有限公司

Python中的super函数,你熟吗

华为云开发者联盟

Python 开发 企业号九月金秋榜

字节跳动基于ClickHouse优化实践之“高可用”

字节跳动数据平台

数据库 大数据 Clickhouse 数据开发 数据计算

软件测试 | 测试开发 | 测试人生 | 二线城市涨薪近10万 ,还能955,这样的机会你想不想要?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Jenkins 如何参数化job ?

测吧(北京)科技有限公司

测试

[SpringBoot系列]基础过渡与夯实(基础配置)

十八岁讨厌编程

Java 后端开发 9月月更

怎么合理使用索引

急需上岸的小谢

9月月更

软件测试 | 测试开发 | 接口测试框架实战(二)| 接口请求断言

测吧(北京)科技有限公司

测试

[MyBatisPlus]DQL编程控制②(查询投影、查询条件)

十八岁讨厌编程

Java 后端开发 9月月更

开源指南|如何从零开始参与 Apache 顶级开源项目?(二)

SelectDB

数据库 大数据 Doris 开源治理 企业号九月金秋榜

软件测试 | 测试开发 | 接口测试框架实战 | 流程封装与基于加密接口的测试用例设计

测吧(北京)科技有限公司

测试

阿里云EMAS移动测试|快速掌握移动端兼容性测试技巧

移动研发平台EMAS

阿里云 应用开发 兼容性测试 移动测试

[Spring boot] Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接

Java快了!

Spring Boot

[MyBatisPlus]DQL编程控制①(条件查询)

十八岁讨厌编程

Java 后端开发 9月月更

Redis 的PSYNC命令

急需上岸的小谢

9月月更

科技公司内部 SaaS 工具大公开|活动回顾(含视频 & PPT)

Bytebase

创业 工具 开发者工具 SaaS

开奖啦!看看8月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动 8月月更

容器化|自建 MySQL 集群迁移到 Kubernetes

RadonDB

MySQL 数据库 RadonDB Kubernetes 集群

恭喜 SelectDB 三位开发者成为 Apache Doris 新晋 Committer!

SelectDB

大数据 开源项目 Committer SelectDB 企业号九月金秋榜

led显示屏有污垢时该怎么清洗?

Dylan

LED显示屏 led显示屏厂家

Istio Ambient Mesh 介绍

Se7en

大学三年狂拿国内外十几个3D挑战赛大奖?!国内CG新星崛起

Renderbus瑞云渲染农场

CG 云渲染 3D动画 渲染农场 Renderbus瑞云渲染

不懂 Kubernetes 实现云原生是什么体验?

北京好雨科技有限公司

云原生 #Kubernetes#

EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器

阿里云大数据AI技术

大数据 运维 企业号九月金秋榜 EMR

解析Stream foreach源码

华为云开发者联盟

Java 开发 企业号九月金秋榜

虚实交互,重磅开启|共建多元、互联的元宇宙产业生态圈,赋能上海打造产业高地

Geek_2d6073

前端二面面试题(附答案)

helloworld1024fd

JavaScript 前端

毫末智行董事长张凯:渐进式路线将在智能驾驶竞赛中赢得终局

科技大数据

PSYNC 部分重同步的原理

急需上岸的小谢

9月月更

处理REST服务安全_SOA_Boris Lublinsky_InfoQ精选文章