数据采集、数据融合、平台能力构建、AI算法支持等方面最新技术实践分享>> 了解详情
写点什么

处理 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:576914
用户头像

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

关注

评论

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

【LeetCode】最长的斐波那契子序列的长度Java题解

Albert

LeetCode 7月月更

Room:又要写业务代码了?看看我吧,给你飞一般的感觉!

编程的平行世界

数据库 Android; android jetpack

微信内H5页面唤起小程序&App

南城FE

前端 微信开发 7月月更

语音聊天源码——语音聊天源码开发设计搭建

开源直播系统源码

软件开发 直播系统源码 开源源码 语音聊天源码 语音社交软件

Linux下QT配合OpenCV完成图像处理(实现基本的人脸检测)

DS小龙哥

7月月更

【C语言】进阶指针night

謓泽

7月月更

浅谈 Slack Channel 支持的一些提高工作效率的特性

Jerry Wang

远程办公 即时通讯 SAP Slack 7月月更

python 中Mixin混入类的用法

杨彦星

Python

泛云桌面关键技术分析

A池伟

云桌面 算力网络

CRMEB Pro v1.4,让用户体验更出彩!

CRMEB

java零基础入门-综合案例(File类+递归)

喵手

7月月更

有证书有目录!|海泰密码服务平台

电子信息发烧客

spark调优(六):大家好才是真的好——广播变量

怀瑾握瑜的嘉与嘉

spark 7月月更

LeetCode-111. 二叉树的最小深度(java)

bug菌

Leet Code 7月月更

软件研发效能需求价值流分析专题

思码逸研发效能

研发效能 软件研发

DBPack 读写分离功能发布公告

峨嵋闲散人

分布式事务 分库分表 读写分离 dbmesh Database Mesh

对接企业微信,客户关系管理也可以很简单!

CRMEB

服务网格中 sidecar 流量治理与多协议嗅探

博文视点Broadview

蛋糕可以一刀切,研发需求可以吗? | 敏捷实践

LigaAI

程序员 敏捷 产品经理 需求分析 敏捷管理

从0开始的 TypeScriptの十四:内置工具类型

空城机

typescript 7月月更

Spring Boot Event 观察者模式,轻松带你实现业务解耦

了不起的程序猿

Java java程序员 spring event

许式伟:Go+ 演进之路

七牛云

golang 编程语言 go+

QT | VS2017 + Qt5.14.2环境搭建

YOLO.

环境搭建 vs Qt Creator 7月月更

Android/Unity大乱斗-完整双方集成交互指南

芝麻粒儿

android Unity 7月月更

RocketMQ系列一:入门级使用演示

hum建应用专家

云计算 RocketMQ

技术分享| HTTP 代理

anyRTC开发者

https 音视频 网络协议 HTTP

如何控制css鼠标样式以及扩大鼠标点击区域

南极一块修炼千年的大冰块

7月月更

【答疑解惑】 裁员浪潮中,N+1 到底指什么?

面试官问

互联网裁员 N+1

激情的开头,大意的结局,Python反爬加更,好友求助米哈游的API,给他安排上

梦想橡皮擦

Python 爬虫 7月月更

深入Ceph原理包含核心算法Crush说明和通信机制原理(五)

Lansonli

云原生 Ceph 7月月更

谈谈JavaScript的作用域及作用域链

南极一块修炼千年的大冰块

7月月更

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