V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
edis0n0
V2EX  ›  信息安全

302 跳转参数中的 returnUrl,检测到 returnUrl 开头不是/就强制加一个/是不是就能防止被用于跳转到违规网站了?

  •  
  •   edis0n0 · 2023-02-16 22:19:42 +08:00 · 1516 次点击
    这是一个创建于 637 天前的主题,其中的信息可能已经有所发展或是发生改变。
    9 条回复    2023-02-17 07:48:33 +08:00
    hgc81538
        1
    hgc81538  
       2023-02-16 23:19:45 +08:00 via iPhone
    edis0n0
        2
    edis0n0  
    OP
       2023-02-16 23:21:20 +08:00
    @hgc81538 #1 302 到 //scam.com 不会跳到站外
    thinkershare
        3
    thinkershare  
       2023-02-16 23:29:54 +08:00
    302 跳转为啥会跳到其它地方? 302 的 HTTP Respone 不是你的服务器返回的吗?服务器不能确保跳转地址的有效性??
    edis0n0
        4
    edis0n0  
    OP
       2023-02-16 23:35:21 +08:00
    创建新回复过程中遇到一些问题:
    请不要在每一个回复中都包括外链,这看起来像是在 spamming
    edis0n0
        5
    edis0n0  
    OP
       2023-02-16 23:35:31 +08:00
    @thinkershare 例如登录页面的跳转,/login?returnUrl=/example ,就会 302 到 /example ,怕有人利用这个 return 到山寨网站 例如 /login?returnUrl=ht tp://sca m.com 有用户可能只看开头的域名没问题就觉得没问题
    rozbo
        6
    rozbo  
       2023-02-16 23:45:13 +08:00
    跳转的时候一般前面要放个中转页,这个中转页可以有 ui(就像某贴吧某乎等),提醒用户即将跳到外站,也可以没有中转页,根据配置的 white list 可以直接进行 block

    BTW , 作为系统的开发者,我们往往不要对数据进行修改操作,因为这样会导致后期排查问题的复杂度指数级的提升
    GeruzoniAnsasu
        7
    GeruzoniAnsasu  
       2023-02-17 00:00:45 +08:00
    后端处理一下 returnUrl 这个参数只对白名单返回 302 不就行了……?
    xiangyuecn
        8
    xiangyuecn  
       2023-02-17 00:31:30 +08:00
    // 打头的是有效的含任意主机域名的 url ,只是缺了协议,会自动补全协议

    你是 http:,那就跳到 http://🐶
    你是 https:,那就跳到 https://🐶

    你是 ftp:,那就跳到 ftp://🐶

    ---

    深挖一点,你 302 /path 前面主机、协议都缺了,自动根据当前的 url 进行补全

    相对路径补全操作更复杂,还有 /../../../ 套娃😂
    piku
        9
    piku  
       2023-02-17 07:48:33 +08:00 via Android
    如果地址不以 /开头,则加上 /。想了想的确挺靠谱。
    但是很多网站是跨域名登录,这种情况就不行了,可能要把整个 url 拆分,校验协议、主机没问题,才能跳到指定的路径。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5485 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:00 · PVG 14:00 · LAX 22:00 · JFK 01:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.