如何保护 Ajax 调用接口?

2014-04-21 10:42:25 +08:00
 y051313
在Ajax中经常会需要使用类似www.stie.com/search.php的接口来执行数据库查询,而这个URL是在源代码里面可以直接看到的,怎样防止别人来调用呢?

可以验证referral,限制所有的调用都来自指定的domain吗?
7025 次点击
所在节点    问与答
5 条回复
explon
2014-04-21 10:44:35 +08:00
你的思路真有意思,你 JS 跨域调用一个给我看看
justfindu
2014-04-21 10:52:07 +08:00
可以增加一个token做验证.


@explon 比如chrome插件可以做到.
lecher
2014-04-21 11:53:44 +08:00
@explon js跨域有很多成熟的方案了,很多开源的查询库都是ajax接口返回json的,现在大家用的广告系统大部分也都是js跨域去拿的数据显示的。
如果ajax接口没有做验证 真的可能会被人调用,对于没有公开参数说明的ajax接口,难点只在于如何构造传送的参数而已。

楼主的问题在于要不要给ajax加验证,加了会增加多少服务器的负载。

refer验证可以防住一般的人,负载不算高
cookie校验+session设置调用时间间隔可以有效降低请求频率,负载不算高
签名加密参数会增加服务器负载,但是可以加强安全性,已经可以防住大部分的非正常调用了
这几个办法已经足够保证ajax接口不会被站外过度滥用了,至于那些非要采集的,真心没办法。防不住的,大众点评那么牛逼的防采集策略,还是被爬个底朝天。
y051313
2014-04-21 14:17:23 +08:00
@justfindu
@lecher

多谢二位
cougar
2014-04-21 14:19:53 +08:00
既然用了ajax的方法,基本上防护不了,lecher 说的比较在理

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

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

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

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

© 2021 V2EX