V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jugelizi
V2EX  ›  程序员

如何看待前端在用户登录使用 url 地址传参的行为

  •  
  •   jugelizi · 2019-10-03 22:29:50 +08:00 · 5734 次点击
    这是一个创建于 1872 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前后端分离
    post 请求登录
    已经是 https 的情况下
    前端把账号密码拼接在 url 里
    后端也正常处理登录成功了
    友军的项目 正常吗?

    26 条回复    2019-10-11 17:11:35 +08:00
    shintendo
        1
    shintendo  
       2019-10-03 22:31:49 +08:00
    没看懂,不是 post 吗?
    jugelizi
        2
    jugelizi  
    OP
       2019-10-03 22:34:26 +08:00
    @shintendo 嗯 post 拼接请求地址是 ?username=test&pwd=123 这样的提交的
    weakish
        3
    weakish  
       2019-10-03 22:36:29 +08:00
    一般 nginx 等服务器日志里会写 url, 所以密码这样敏感的信息不该放 url 里。
    mkeleven
        4
    mkeleven  
       2019-10-03 22:36:47 +08:00
    其实无所谓的啊,无非是更加容易被攻击而已
    DOLLOR
        5
    DOLLOR  
       2019-10-03 22:41:48 +08:00 via iPhone
    我想了想,如果是 XHR、fetch、Ajax 提交,拼在 URL 上还是在 body 里好像没啥区别,只是不能太长。但是拼接过程中要记得做 URL encode 吧。
    shanigan
        6
    shanigan  
       2019-10-03 22:44:46 +08:00
    @jugelizi 那他 post body 里面放什么? 就算有 https, server log/browser history 里面都会有记录
    stillwaiting
        7
    stillwaiting  
       2019-10-03 22:46:44 +08:00
    以为来到知乎了。。。
    API 谁定的呢?
    感觉流程一般都是:后端提供 API 文档,简单评审,前端根据这个 mock,最后联调
    jugelizi
        8
    jugelizi  
    OP
       2019-10-03 23:01:14 +08:00
    @shanigan 空的啊
    数据在 url 里已经全有了
    之前 form 时代会在浏览器历史记录里所以有密码泄露风险
    现在呢
    Trim21
        9
    Trim21  
       2019-10-03 23:02:30 +08:00
    遇到这种网站能不能用就不用…
    learnshare
        10
    learnshare  
       2019-10-03 23:45:26 +08:00
    找个明白人定一下 API 规则
    GzhiYi
        11
    GzhiYi  
       2019-10-04 00:37:27 +08:00
    正不正常:不正常
    能不能用:能用
    推荐不推荐:不推荐
    有什么好的建议:定下前后端数据对接的规则。
    ScoutWang
        12
    ScoutWang  
       2019-10-04 02:23:50 +08:00 via iPad
    密码加时间戳盐做哈希再传,不然你放 url 还是 post body 都不安全
    zqx
        13
    zqx  
       2019-10-04 07:03:45 +08:00 via Android
    先请求一个公钥,客户端用这个公钥给用户数据编码,然后随便什么 get post 请求把数据发给服务端都可以了。
    只要没加密,放在 request body 和 request header 和 url 都是不安全的
    hyperbin
        14
    hyperbin  
       2019-10-04 07:15:49 +08:00 via Android
    @zqx 那要 HTTPS 干嘛
    Mutoo
        15
    Mutoo  
       2019-10-04 07:26:36 +08:00
    URL 传参会被日志和 CDN 记录,容易泄漏。后端的一些框架直接读 request[param] 是不区分 get/post 的,这部分得谨慎处理。
    Mutoo
        16
    Mutoo  
       2019-10-04 07:27:15 +08:00
    @Mutoo 这里的泄漏不一定是对外泄漏,也有可能是对内泄漏。之差推特就犯过这类错误。
    zqx
        17
    zqx  
       2019-10-04 08:21:49 +08:00 via Android
    @hyperbin HTTPS 只能保证传输过程中(端到端)的加密吧?到了目标客户端以后,比如企业级的访问网关还是会记录请求信息,再经过各种服务过滤和转发,最后到达业务服务器,这时候数据已经泄露给内部其他系统很多次了
    xiaotuzi
        18
    xiaotuzi  
       2019-10-04 08:40:32 +08:00 via iPhone
    URL 携带账号密码,并且 post 提交的话,是可以在后台接收到数据的。
    但是,前台把账号密码放到 URL 传递是不对的做法,是不是他前端代码有问题?排查下就好了。
    Takamine
        19
    Takamine  
       2019-10-04 08:49:33 +08:00 via Android
    能用,但不推荐。
    这样传参的数据格式应该是 application/x-www-form-urlencoded。
    前后端分离在接口交互中,数据格式应该有通用性,一般约定用 application/json 比较好,formData 感觉都用得不多。
    Cbdy
        20
    Cbdy  
       2019-10-04 09:00:14 +08:00 via Android
    很不妥
    huijiewei
        21
    huijiewei  
       2019-10-04 09:14:39 +08:00
    GET 的参数日志会记录,日志无法脱敏。
    MikeFeng
        22
    MikeFeng  
       2019-10-05 13:01:50 +08:00 via Android
    前后分离所有 post 不应该都用 post json 的方式吗?怎么还走 post 表单那套
    skyqqcc
        23
    skyqqcc  
       2019-10-05 16:42:19 +08:00 via Android
    所以想说明的是后端的 API 根本是 POST 和 GET 都能用的么....
    hyperbin
        24
    hyperbin  
       2019-10-06 07:31:11 +08:00 via Android
    @zqx 客户端都不可信了,你上什么都没用
    jzmws
        25
    jzmws  
       2019-10-06 11:23:32 +08:00
    post 和 get (url 挂参) 方式 本质是一样的,只不过一个要工具看,一个直接看请求地址,正确的做法是前端加密,
    MiBAO
        26
    MiBAO  
       2019-10-11 17:11:35 +08:00
    这明显不妥,不说什么加密至少你最基础的 post json 方式提交得弄撒。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3728 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:16 · PVG 12:16 · LAX 20:16 · JFK 23:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.