shilielin
V2EX  ›  Flask

如何保护在小程序端保护 Flask 写的 API?

  •  
  •   shilielin · Jun 18, 2018 · 6710 views
    This topic created in 3066 days ago, the information mentioned may be changed or developed.

    打算做个小程序,所以用 Flask 写了后端 API,现在的问题是这个 API 没有加入任何的验证信息。只要知道 API 的连接构造,每个人都可以请求 API,然后修改后台的数据。

    因为我的数据都是会在小程序都请求,所以现在的想法就是能不能在微信用户初次给我小程序授权的时候,利用 unionid 生成一个初始的密码,并且利用 unionid+密码生成一个 taken,以后用户每次请求数据的时候,就通过用户的 unionid 和 taken 进行鉴权。

    不知道这样是否可行?另外想着到目前给微信小程序使用的 API 常用的处理是怎样的?

    小白用户,希望大家可以指点一下,谢谢!

    16 replies  •  2018-06-23 22:53:55 +08:00
    silhouette
    silhouette
    Jun 18, 2018 via Android
    1
    token 不是 taken 哦
    rb6221
    rb6221
    Jun 18, 2018 via Android
    2
    后端自己支持一下 token 验证不行么
    hunk
    hunk
    Jun 18, 2018
    3
    了解下 JWT 登录。
    返回 token,保存为 cookie.
    shilielin
    shilielin
    OP
    Jun 18, 2018 via iPhone
    4
    @silhouette 嗯,写错了
    shilielin
    shilielin
    OP
    Jun 18, 2018 via iPhone
    5
    @hunk 如果使用 JWT 的话,是不是也要使用 httpauth 的 token 类?
    stonehe
    stonehe
    Jun 18, 2018
    6
    flask-httpauth 这么方便简单的库为什么不拿来用
    woscaizi
    woscaizi
    Jun 18, 2018 via iPhone
    7
    直接在服务端验证 unionId,openId 是否存在,最简单的办法吧。
    zhuangzhuang1988
    zhuangzhuang1988
    Jun 18, 2018
    8
    用 django-rest-framework
    自己搞认证啥,api 限制啥的瞎折腾 不然直接用标准的
    KgM4gLtF0shViDH3
    KgM4gLtF0shViDH3
    Jun 18, 2018
    9
    小程序的代码别人拿不到,不知道 root 之后能不能拿到,如果别人拿不到的话可以在客户端存个 secret 然后和时间戳什么的加密成一个 token,请求的时候把 token 带上就能验证了。
    shilielin
    shilielin
    OP
    Jun 18, 2018 via iPad
    10
    @zhuangzhuang1988 嗯,我打算用现有的轮子,只是想知道目前大家是不是都是用 Web 和 app 一样的思路处理小程序的 API
    wzw
    wzw
    Jun 18, 2018
    11
    flask-restful 可以去看看
    geekcorn
    geekcorn
    Jun 18, 2018 via iPhone
    12
    理论上通过微信授权流程链接获取的 unionid 或者 openid 是没法伪造的吧,直接数据库匹配数据就行了吧,不放心就加一层 jwt 认证,推荐 pyjwt 框架
    chengran630
    chengran630
    Jun 19, 2018
    13
    想复杂了,就是把 session 替换成 token
    前台在第一次联系后台的时候生成一个唯一 token,返回给前台,前台存在 cookie 里,每次请求的时候在 header 里带上这个 cookie 就行了
    mht
    mht
    Jun 19, 2018
    14
    @bestkayle 我在一个小程序的交流群里 见过有人专门用安卓手机抓包,然后用 github 上的开源工具解包小程序代码,兜售小程序的源码来着...
    shilielin
    shilielin
    OP
    Jun 20, 2018 via iPhone
    15
    @mht 这都可以啊
    ybark
    ybark
    Jun 23, 2018
    16
    手机本地找到小程序代码包 wxapkg,通过 github 上有人写的反编译还原脚本(项目距发这条评论前 11 天还在更新)。理论上看,若真要有团队有时间去搞你的小程序,如果你没做特别的处理,小程序就是开源的。那么此时后端 api 带不带 token,就没区别了,整套代码跑起来,token 也能拿到,后面需要 token 的 api 也不用伪造请求。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2146 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 14:33 · PVG 22:33 · LAX 06:33 · JFK 09:33
    ♥ Do have faith in what you're doing.