提供Restful API的时候如何确保接口的安全性?

RT,譬如如何防止重放攻击神马的,我觉得仅仅加个access_token没什么用吧,请众神赐教,最好能举个例子,譬如微博或者twitter怎么做的,谢谢。

————————————————————————————————————————————————————————————————
补充一下,其实我就是想问问rest api怎么防重放的。。。。

阅读 41.8k
6 个回答

RESTFul API在安全性方面跟其它的web app没有什么区别
RESTFul只是一种架构风格,不会产生安全上的差异

UPDATE:
你这个问题就不该把REST扯进来,重放攻击才不管是不是REST

而且你问了好大一个问题,我觉得重放攻击的实施跟具体的业务逻辑关联紧密,在没有设置具体场景的情况下,只能泛泛而谈

http://baike.baidu.com/view/1569933.htm
百度百科就有一些防御思路,你将就琢磨一下吧

1.《RESTful API 设计最佳实践》这本书提出有三种方案:基本的http basic,Hash Message Authentication Code (HMAC),token auth logic,当然你也可以实现更多,比如参考:[Kerberos]: http://zh.wikipedia.org/zh/Kerberos、oauth等等,八仙过海各显神通!

2.找到适合自己的才是好的

推荐极简的Restful框架 Resty 开发效率比ssh高了n倍,其中resty-security是极简的权限设计,非常小巧只有10个左右class文件

关于防止重放攻击,目前主流做法,是客户端发送请求时带请求编号,服务器保存编号,当重放攻击时(只要编号规则没有被破解,一般不会出现)发出的请求请求编号应该是相同的,服务器过滤掉就行,大多数权限框架都不支持该方法,主要是需要客户端做一些处理比较麻烦

1、Https加密
2、接口加密,参数结合时间戳加密(服务器端对比时间戳,时间戳在误差范围外过滤掉)

现在主流的都是用oauth2协议吧,oauth2具体可以参考:帮你深入理解OAuth2.0协议

这个帖子 是给rails开发的restful API加上oauth的例子,楼主可以参考。

现在主流的语言一般都有oauth2的库,应该都不难加上oauth2。

可以从服务器日志入手,统计一定时间段内访问超过次的用户,禁止该ip继续访问

logo
101 新手上路
子站问答
访问
宣传栏