y051313
V2EX  ›  问与答

如何保护 Ajax 调用接口?

  •  
  •   y051313 · Apr 21, 2014 · 7453 views
    This topic created in 4453 days ago, the information mentioned may be changed or developed.
    在Ajax中经常会需要使用类似www.stie.com/search.php的接口来执行数据库查询,而这个URL是在源代码里面可以直接看到的,怎样防止别人来调用呢?

    可以验证referral,限制所有的调用都来自指定的domain吗?
    5 replies    1970-01-01 08:00:00 +08:00
    explon
        1
    explon  
       Apr 21, 2014
    你的思路真有意思,你 JS 跨域调用一个给我看看
    justfindu
        2
    justfindu  
       Apr 21, 2014
    可以增加一个token做验证.


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

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

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

    多谢二位
    cougar
        5
    cougar  
       Apr 21, 2014
    既然用了ajax的方法,基本上防护不了,lecher 说的比较在理
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2948 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 15:02 · PVG 23:02 · LAX 08:02 · JFK 11:02
    ♥ Do have faith in what you're doing.