我的 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 请求注册呢?谢谢。
1
abelyao 2016-03-05 13:15:43 +08:00
说实话,这两个问题都不是 RESTful 的问题……
|
2
julor 2016-03-05 13:34:42 +08:00 via Android
请问你不用 rest 时是怎么解决的?和 rest 有关系?
|
3
orFish 2016-03-05 13:41:00 +08:00
api limit 是干嘛的。。。
第二个问题就算不是 rest 也有这个问题啊 |
4
noli 2016-03-05 13:49:45 +08:00
应该说,用了 RESTAPI 使得你列出来的这些问题更好解决了。
1. 如果你的 RESTful 框架支持 filter 或者类似的东西,你可以针对 get 方法来做限制;相反如果你不是用 restful 的话,鬼知道你要针对怎样的 url 和请求来做限制? 2. 针对恶意大量注册,新加一个验证码 AP ,用来给填对了验证码的注册用户发 token ;然后实现注册逻辑的地方,从数据库里面校验这个 token ,就解决了。 如果不用 restful ,很可能你就要把 注册和反机器人写在一个逻辑了。 |
5
hantsy 2016-03-05 19:13:05 +08:00
这和 REST 一点关系都没,安全设计方面的问题。
|
6
hantsy 2016-03-05 19:23:47 +08:00
你的担心是正常的,我想国内 d 大部分网站也没这方面意识。
从技术上,实现不难。 1. csrf , 很多框架都已经内置实现了, Spring Security ,( JSF 2.2 当然这个不属于 REST 范围)等。(检验每次请求的合法性) 2. API 对使用网站 example.com 授权,用 Oauth 容易实现。(检验 API 客户端的合法性) |
9
hantsy 2016-03-05 20:35:42 +08:00
|
10
noli 2016-03-05 23:10:40 +08:00
|
11
geekontheway 2016-03-05 23:32:13 +08:00
1.可以用 UUID
2.增加限制规则 |
12
akira 2016-03-06 23:30:25 +08:00
有人抓你说明你的内容还有那么点用,最怕是完全没人有兴趣。。
|