get 请求到的数据如何能不被别人扒下来

2016-10-18 23:45:29 +08:00
 Lpl

比如有个 GET 类型的 api :https://www.xxx.com/api/article/list

我们可以通过工具查看到 api 返回的值,那么等于说这个接口是暴露出来了(或者 app 中反编下源码也能找到对应的 api )。那么不就是可以通过程序调用 api 把这些数据拖出来了么?

现在很多 WEB 端网站用的都是 view 层模板的形式, GET 请求得到的直接是页面,这种自然不会把数据给暴露出来。 但是对于有很多 RESTful 接口的网站,数据都会被暴露出来,然后就能把暴露出来的数据扒下来。如果不想把这些数据扒下来的话要怎么办?

我想了两个办法:

  1. 类微信那种的,加 token ;
  2. 增加 IP 限制,无论是在代码或者 Nginx 做配置都行,限定特定 IP 访问。

不知道有没有其它解决办法? 还有第一个,如果用加 token 解决的话要怎么弄。。

5997 次点击
所在节点    程序员
31 条回复
qwer1234asdf
2016-10-19 11:26:40 +08:00
encryption + base64 encode ?
TingHaiJamiE
2016-10-19 12:50:54 +08:00
这是反爬虫的问题吧,不如从版权方面考虑。
yidinghe
2016-10-19 12:57:02 +08:00
简单做法是,受控资源需要登录才能访问
ooTwToo
2016-10-19 13:59:07 +08:00
@lgh06 请教一下,前后端完全分离,又该怎么做才能保证安全性呢? JWT 好像不支持 JavaScript
samueldeng
2016-10-19 15:31:37 +08:00
@ooTwToo

个人理解的粗略框架:

客户端: 服务器
-------(username, password)-------->
<------根据(usr,pwd)生成的 token----
--------GET /foo/bar (附带 token)---->
--------POST /bar/foo (附带 token)---->

不过细化下来,还是有好多考究的地方。

至于说,题主提到的反爬虫, 可以通过上述方案将验证解耦到“登录验证”这边,发现有异常请求,封停 username,password 。
否则, Web 技术确实无法保证绝对的安全性。
ihuotui
2016-10-19 15:38:09 +08:00
加 token , token 请求次数限制,根据统计正常的请求次数,然后设置一个伐值,超出后限制每小时请求数,请求的数据的 id 变为无规律,防止爬数据。感觉就跟传统的页面防止爬虫一样。
wizardoz
2016-10-19 15:44:53 +08:00
认证啊
接口暴露出来不等于数据暴露出来
wizardoz
2016-10-19 15:52:09 +08:00
@ooTwToo 首先 javascript 有支持 jwt 的库 jsrsasign
其次,jwt 用来做认证不需要前端支持,前端只要每次请求都在头部带上 jwt 的 token 就可以了,服务端自会处理.
只有使用 jwt 包做数据加密传输的情况下才需要前端和服务器都支持 jwt.
ooTwToo
2016-10-19 16:43:26 +08:00
@wizardoz OK ,大致知道了 JWT 的使用场景。就是说在前后端完全分离的情况下,只有某些模块才需要使用 JWT 来做认证,比如:订单、个人资料修改。那么用户登录功能该怎么做呢?标识用户登录的 token 是自己实现还是用 JWT?
fangjinmin
2016-10-19 16:55:14 +08:00
RESTful 的接口,不想被外面调用的话,限制 IP 就是必要的了。

如果想被外面有限的用户调用,那要增加对每个用户验证的机制。
方法有很多,最简单的方法是双方约定一个密码,交互的数据进行加密,
request 和 response 都只有双方能够解密对方的东西,
传输时也加密( HTTPS ),还有一个是要防止有效的用户“作恶”,你必须
对限制用户的可操作的数据的范围,不能 A 用户能操作 B 用户的数据。
mingyun
2016-10-19 23:53:56 +08:00
楼上说的 jwt 各种语言都支持

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

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

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

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

© 2021 V2EX