engHacker

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

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

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

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

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

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

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

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