RESTAPI 实际应用的一些疑惑。

2016-03-05 13:10:53 +08:00
 WIwindson

我的 RESTAPI 设计是这样的

例如获取第一页的 post
https://example.com/api/posts?page=1
获取 ID 为 22 的 post
https://example.com/api/posts/22/
注册用户
https://example.com/api/users/

1.这样别人看到我请求的规则,页数和 id 都可以猜测到,不也很容易抓取里面的数据吗?该怎么破?
2.注册用户的 API 因为是注册用,所以 POST 方法无权限的要求,如何防止用户一直 POST 请求注册呢?谢谢。

3220 次点击
所在节点    程序员
12 条回复
abelyao
2016-03-05 13:15:43 +08:00
说实话,这两个问题都不是 RESTful 的问题……
julor
2016-03-05 13:34:42 +08:00
请问你不用 rest 时是怎么解决的?和 rest 有关系?
orFish
2016-03-05 13:41:00 +08:00
api limit 是干嘛的。。。
第二个问题就算不是 rest 也有这个问题啊
noli
2016-03-05 13:49:45 +08:00
应该说,用了 RESTAPI 使得你列出来的这些问题更好解决了。

1. 如果你的 RESTful 框架支持 filter 或者类似的东西,你可以针对 get 方法来做限制;相反如果你不是用 restful 的话,鬼知道你要针对怎样的 url 和请求来做限制?

2. 针对恶意大量注册,新加一个验证码 AP ,用来给填对了验证码的注册用户发 token ;然后实现注册逻辑的地方,从数据库里面校验这个 token ,就解决了。 如果不用 restful ,很可能你就要把 注册和反机器人写在一个逻辑了。
hantsy
2016-03-05 19:13:05 +08:00
这和 REST 一点关系都没,安全设计方面的问题。
hantsy
2016-03-05 19:23:47 +08:00
你的担心是正常的,我想国内 d 大部分网站也没这方面意识。

从技术上,实现不难。
1. csrf , 很多框架都已经内置实现了, Spring Security ,( JSF 2.2 当然这个不属于 REST 范围)等。(检验每次请求的合法性)
2. API 对使用网站 example.com 授权,用 Oauth 容易实现。(检验 API 客户端的合法性)
WIwindson
2016-03-05 19:48:14 +08:00
@hantsy csrf 应该只是针对 post,put 等请求的吧。
WIwindson
2016-03-05 19:49:13 +08:00
@noli 第二点:这样每次注册都得填验证码,现在主流好像都是注册好几次才需要填的。
hantsy
2016-03-05 20:35:42 +08:00
@WIwindson 没错。我的 1.2 不针对他问题的一二。

对保护内容可以用 1. HTTPS 2. 内容 Sign ( JWT 等)

对于注册嘛。。。验证码不如短信直接。
noli
2016-03-05 23:10:40 +08:00
@Wlwindson

主流是根本不防注册。有多少个 email 地址可以拿来注册?多多益善。
起码给投资人的数据好看。

不过看来你也没打算按主流做啊?不然这根本就不是问题
geekontheway
2016-03-05 23:32:13 +08:00
1.可以用 UUID
2.增加限制规则
akira
2016-03-06 23:30:25 +08:00
有人抓你说明你的内容还有那么点用,最怕是完全没人有兴趣。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX