知乎也有这样的问题,可以拼接明文地址,进行无源跳转。好多导航站点也在用这个方法,如果是直接链接,可能会被检测出来有灰产链接,导致他的站点被封,所以用这个手段防止被封,我遇见很多导航站都是利用知乎的跳转。
最近在我站也发现了这个问题,实测子比站也存在此问题。
在代码中,看逻辑以及描述应该是这样的,golink=后应当为base64才允许跳转,原本是没问题的,但目前发现外人可以直接在后面拼接域名链接直接跳转,这就是问题所在
例子问题url:https://www.zibll.com/?golink=https://baidu.com
定位问题代码:没有深究其原因,应该是缺少判断,疑似判断取值是否加密函数部分的代码有误,缺少解释器或者判断失误。
临时解决方法:打开go.php文件,在if (!empty($t_url)
后添加正则验证,判断是否为base64
&& preg_match('/^[a-zA-Z0-9\/\r\n+]*={0,2}$/', $t_url)
这个其实没什么用处,懂的人依旧可以利用你的跳转链接,他可以先把链接转为base64,再拼接使用你跳转链接,治标不治本。
有人说该文件有判断是否非本站的来源地址,其实这个有方法破的,让浏览器不传入来源地址,导致函数失效,也就起不到防止被利用的作用了。
以下是我的思路,有空会实现一下
在转为base64之前,先进行非对称专属密码加密,然后go页面判断是否解密成功,若无法解密证明是非本站的。
2024.11.21已实现