本人再举荐一个微博登录的问题:
操作:在微相关页面:比如以下中招的:微访谈(http://talk.weibo.com/)等,就那这举例吧
- 未登录用户,在http://talk.weibo.com/ 站点采用顶导点击登录
- 弹出登录浮层,输入正确的东东
- 咔-----回车,悲剧出现了:当前页面是http://login.sina.com.cn/
-------------------------而不是正常的返回到http://talk.weibo.com/ 的登录状态。
问题:
不会还没有发现问题吧? 亲,登录没有在中间跳转页面成功重定向到登录前的页面
原因:
我来给你分析以下:
经一系列测试回归得出下面真实结论:
因为:
在微访谈的页面配置了:
而这个参数会在登录的时候加上下面这个请求里面
我的疑问就是在这个参数,试验吧这个entry改为空,-------------- 测试通过正常,
那我就各种找其他微应用:其实很少有微***配置这个参数,不过功夫不负有心人,我找到了“微搜索”
而我们在http://s.weibo.com/ 居然可以成功登陆跳转,那我想所有人都有一个想法:
我要把这个可以的entry的值拿过了,放在不是s.weibo.com的其他微应用里面试验,结果:
居然成功了,请注意我的来源不是s.weibo.com,虽然我用了人家的entry,能不能加点验证啊!!!!
总结吧:
文档说的entry是注册的时候用的,但是注册其实就是一个链接:
<a href="http://weibo.com/signup/signup.php?topnav=1&wvr=5">注册</a>
我配置了entry,请问是不是没有读一下啊!!!!!!!!!!
----------- 结论:
http://login.sina.com.cn/sso/login.php?entry=*** 会挂掉? (莫非白名单???)
目前给出的方案:
- 要么配entry为空吧
- 要么配entry为“weisousuo” --------- 不”合适“的做法
--------------------------- old 不相关莫看-------------------------------------
本文是个人最近发现的weibo头脚本的一个潜在问题,请指教。
现在很多第三方多会调用微博的:http://js.t.sinajs.cn/t4/home/js/public/topInit.js
目的是:进行微博头调用加载等。
直入主题:
以下是我的操作:
var $CONFIG = { //..........各种配置
//重点是这个参数,假如我现在是这样写的,而且很多应用可能这么写
backurl:window.location.href
//........
}
下面我们测试一个地址(注意参数!):
//可以是一些应用的地址,只要挂?后面的//如下是一个测试地址
********.com/?key="><iframe/οnlοad=document.write(/1111/)>
当然我是在登录以后手动输入以上地址,因为未登录状态重定向后会对字符进行转义。。
我们会发现:
然后就挂了:
当然是ie下才会出现,ie不会对字符转义。
流程其实还是很简单:
topInit 会按照 _wv 调用top.js,
这边:
------------------ 是直接对用户页面的配置参数进行赋值的!!!
问题就这边:
如果像上面我这样操作,就会出现执行脚本!!!!!!
原因还是:
backurl一个地方也没有encode!!!!!!!!!!!!!!!!!!!!!!!!!!
建议:
个人觉得还是top来做encode,或者是否在使用文档里面强烈标注:backurl的参数需要encode一下!!!!!!!
------------本文只是从前端js脚本去考量,当然一般后端也可以做url关键字屏蔽或者重定向等!!!只是探讨技术而已!!