提供Restful API的时候如何确保接口的安全性?
RT,譬如如何防止重放攻击神马的,我觉得仅仅加个access_token没什么用吧,请众神赐教,最好能举个例子,譬如微博或者twitter怎么做的,谢谢。
————————————————————————————————————————————————————————————————
补充一下,其实我就是想问问rest api怎么防重放的。。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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继续访问