engHacker

[请教] 前端 AJAX 请求如何保护接口?

  •  
  •   engHacker · Jul 11, 2015 · 11455 views
    This topic created in 4137 days ago, the information mentioned may be changed or developed.

    移动客户端请求后端API的时候可以加密和验证,AJAX请求写在JS文件中,接口地址,请求参数等信息全部暴露了,即使加密,JS加密代码也可以直接查看,如何保证安全性?

    我没有前端开发经验,如有错误之处,还请各位见谅。

    22 replies  •  2015-07-13 09:33:00 +08:00
    kaneg
    kaneg
    Jul 11, 2015
    1
    API 接口暴露不等于谁都可以自由调用,你可以在API调用中增加鉴权,只有鉴权过后的调用才是有效的。例如增加一个session id之类的。
    engHacker
    engHacker
    OP
    Jul 11, 2015
    2
    @kaneg 嗯,但是加上了session id,别人抓包一样可以获得。还是没法防止他人调用。
    dalaomj
    dalaomj
    Jul 11, 2015
    3
    如果是非常重要的、不能面向公网的数据。那就后端请求接口,前端只有请求结果。
    YuJianrong
    YuJianrong
    Jul 11, 2015 via iPad
    4
    设计ajax请以信息就是对客户公开为前提来设计。
    virusdefender
    virusdefender
    Jul 11, 2015
    5
    即使别人不直接调用ajax接口 还是可以采集HTML的 没办法绝对杜绝,只能加大难度。

    因为你说的是移动客户端,可以采用下面的办法

    1 严格注册条件,比如验证手机号邮箱等,然后登陆后调用,每个账号都有自己的频率限制

    2 使用https,key pinning, 能杜绝部分小白直接去抓包

    3 代码混淆加appid、app_secret、nonce的形式,防止请求重放
    hjc4869
    hjc4869
    Jul 11, 2015
    6
    @virusdefender key pinning对浏览器的客户端完全没用= =
    kokdemo
    kokdemo
    Jul 11, 2015
    7
    @YuJianrong 赞成
    kaneg
    kaneg
    Jul 11, 2015
    8
    @engHacker 防止别人抓包就只能用https了
    FrankFang128
    FrankFang128
    Jul 12, 2015
    9
    HTTP 就是不安全的呀
    spritevan
    spritevan
    Jul 12, 2015
    10
    loading
    loading
    Jul 12, 2015 via Android
    11
    传输加你也就只能 https
    你说的认证,session 这些应该不用多说。
    imlonghao
    imlonghao
    Jul 12, 2015 via Android
    12
    @kaneg https 还是可以抓包的吧
    tftk
    tftk
    Jul 12, 2015
    13
    Nginx ACL.
    kaneg
    kaneg
    Jul 12, 2015
    14
    @imlonghao https怎么轻易抓包?就是中间人攻击也不是轻而易举地事。如果这样易如反掌,Google, Apple都不要活了。
    oott123
    oott123
    Jul 12, 2015
    15
    @kaneg 在浏览器端做的话,只要按 F12 就能看到了,还用不着抓包呢……
    iyaozhen
    iyaozhen
    Jul 12, 2015❤️1
    17
    @oott123 两个不同的方面吧。浏览器只能看见自己的数据和通用数据的格式。每个用户请求的结果肯定是不一样的。

    实际是防止不了别人发现你的接口的,但我们要做的是发现了接口用不了(用户验证),以及所有用户数据在接口传输过程中的安全(防止撒网抓包)。

    若是要防止被采集的话(信息展示类的网站),ajax 其实只是稍微提高了采集的难度。
    johnsmith123
    johnsmith123
    Jul 12, 2015
    18
    这和前端页面的隐私一样没啥意义吧
    imlonghao
    imlonghao
    Jul 12, 2015
    19
    @kaneg 我认为楼主讲的是防止AJAX请求被抓包,就算页面使用了https,使用Fiddler 2等,安装Fiddler的根证书,本地是可以抓https的包的。楼主将的应该是这种。
    lianyue
    lianyue
    Jul 12, 2015❤️1
    20
    抓包。。。 没有抓不到的包吧
    iyaozhen
    iyaozhen
    Jul 12, 2015❤️1
    21
    @imlonghao 这还不如浏览器 F12 方便。关键还是鉴权,知道了包的结构/内容(自己的)(网页的话就是 json 啥的)也没啥用呀。
    iyangyuan
    iyangyuan
    Jul 13, 2015
    22
    f12->network 一目了然
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   768 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 23:09 · PVG 07:09 · LAX 15:09 · JFK 18:09
    ♥ Do have faith in what you're doing.