码迷,mamicode.com
首页 > 其他好文 > 详细

代理登录功能

时间:2017-08-12 22:41:46      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:技术分享   ram   16px   验证   分析   异步发送   修改   简洁   用户   

  为了给别人提供账号密码以便xx,同时又为了防止账号密码被对方篡改,于是想做一个自己的登录页面,自己设计一套非真实的账号密码,然后别人通过在我的网页上登录我设计的账号密码,通过我的验证后我再来提供xx服务。

方案一:模拟HTTP请求

  这是一开始最先想到的方案,于是通过fiddler,wireshark抓包分析,构造HTTP头部模拟HTTP请求。这里有个技术难点是我要伪造用户的源IP,这样服务器才会给用户提供服务。但是无论我怎么伪造HTTP头部,服务器都是给我这个中间人提供服务,而不是给我的用户提供服务。大概是因为伪造HTTP头部的时候只能修改HTTP_X_FORWARDED_FOR和HTTP_VIA这两个IP地址,这两个地址是在有真正代理时候才会添加的头部,而服务器验证的时候可能没取这两个中的任何一个作为用户IP,而是用REMOTE_ADDR作为用户IP,这个地址又是不能修改的。尝试了两天行不通,隧换方案。

  ps:这个方案行不通的根本原因是模拟HTTP请求是在我这台机器上发出的,而不是从我的用户上发出的,服务器不认我的用户。

方案二:用户用客户端登录

  这个方案是最安全的,也是非常简洁的。用户登录前先向我请求真正的账号密码,我还能验证他是不是我的用户(我自己的账号密码)。用户会完全神不知鬼不觉得情况通过我来获取服务。但是这个方案最大的缺点是要安装客户端,用户可能根本不想去安装(短期不是刚需),同时客户端还要考虑各种操作系统的情况。隧放弃。

方案三:XMLHttpRequest跨域请求

  用户先在我的网页上通过我的验证,在回传登录成功页面的同时把真正的账号密码传给他,页面在加载的同时,利用XMLHttpRequest异步发送跨域请求。就是用户在请求我的网页时候,又向其他服务器发出登录请求(跨域了)。跨域是指两个请求的协议、域名、端口不一致。

  为了安全考虑跨域请求本来就是不被浏览器所支持的,但是目前越来越多的需求需要支持跨域请求,所以很多浏览器渐渐放宽了这个限制。用XMLHttpRequest发送跨域请求倒是不难,但是有个问题是不能拿到跨域请求的返回结果,而刚好我的服务需要根据返回结果来退出。但是没有关系,在通过服务器的验证后,用iframe插入服务器的首页,页面顶部有一个退出按钮,所以可以嵌入进来给用户用,缺点就是我控制不了这个按钮,不能在用户点击退出时相应的跳转成退出页面。但是基本上是完成了功能。

  ps:这个方案有一个致命的缺点,懂行的人能看出来,盗取我的信息,但是对于一般人还是可用的。暂时就这样吧,毕竟需求又不是很大。

登录前首页

技术分享

 登录后首页

技术分享

代理登录功能

标签:技术分享   ram   16px   验证   分析   异步发送   修改   简洁   用户   

原文地址:http://www.cnblogs.com/vincent-vg/p/7351587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!