基于IP的分流模式存在巨大的安全隐患:
举个例子,你要访问的网站B想收集你的真实IP;你点击了它的链接,它返回给你一个html页面,到目前位置一切还是正常的,因为他看到的是你的正向代理的IP,不是你的真实IP;
但是它给你的html代码里有跨域请求的代码,通俗的说,这段代码请求的不是网站B了,而是另一个不相关的网站A。
这个网站A不在你的分流规则内,所以你的本机直连了过去,然后A将IP甚至是邮编等信息传递回来。
B网站就这样轻而易举搞到了你的隐私信息,
因为A提供了公网的没有鉴权的API接口,甚至支持json with padding方式请求,所以不会出现跨域错误。
样例:创建一个html文件,输入以下内容,打开html,就可以看到你的家庭IP。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <h1>Test</h1> <script> function getinformation(data) { var ip = data.ip; window.alert('IP地址: ' + ip) } </script> <script src="https://vv.video.qq.com/checktime?otype=json&callback=getinformation"></script> </head> <body> </body> </html>
不分流就没有这个漏洞么?浏览器的安全设置会阻止脚本执行么?脚本访问的网址怎么知道是否在分流规则之外呢?