URL参数跳转类重定向的名称及ASP站点下的配置方法
问题解答
该重定向方式的专属名称
这种通过URL查询参数传递跳转目标的重定向,常用的专属称呼有两类:
- 合法合规使用的场景下,通常称为 参数驱动型重定向 或 查询参数跳转
- 若未对跳转目标做任何白名单校验、允许跳转到任意外部域名,这种实现属于高危安全漏洞,专有名称为 开放重定向(Open Redirect)
ASP站点配置该重定向功能的步骤
配置时必须优先处理安全校验逻辑,避免引入漏洞,具体操作如下:
- 获取URL中的跳转参数值
使用ASP内置的Request.QueryString方法读取参数内容:
Dim redirectUrl redirectUrl = Trim(Request.QueryString("URL")) ' 兼容没有带协议前缀的跳转地址 If redirectUrl <> "" And InStr(redirectUrl, "://") = 0 Then redirectUrl = "http://" & redirectUrl End If
- 配置跳转目标白名单并做校验
禁止直接使用获取到的参数跳转,必须先校验目标域名是否在信任白名单内:
' 定义允许跳转的信任域名列表,按需修改 Dim allowDomains, isAllow, domain allowDomains = Array("yourdomain.com", "redirecteddomain.com") isAllow = False ' 遍历白名单匹配域名,也可替换为正则提取根域名的校验逻辑,更严谨 For Each domain In allowDomains If InStr(LCase(redirectUrl), LCase(domain)) > 0 Then isAllow = True Exit For End If Next
- 根据校验结果执行跳转
If isAllow And redirectUrl <> "" Then ' 校验通过执行重定向 Response.Redirect(redirectUrl) Else ' 校验不统一跳转到站点首页,也可返回400错误提示 Response.Redirect("/index.asp") End If
注意:省略校验逻辑的参数重定向属于高危安全漏洞,会被攻击者利用制作钓鱼链接窃取用户信息,上线前必须完成校验逻辑的测试。
内容的提问来源于stack exchange,提问作者SERIHUNT
相关产品推荐
相关产品推荐

