zoukankan      html  css  js  c++  java
  • 代理登录功能

      为了给别人提供账号密码以便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:这个方案有一个致命的缺点,懂行的人能看出来,盗取我的信息,但是对于一般人还是可用的。暂时就这样吧,毕竟需求又不是很大。

    登录前首页

     登录后首页

  • 相关阅读:
    第3章 MFC框架程序剖析
    第2章 掌握C++
    第1章 Windows程序内部运行机制
    【MFC】画线
    使用RegSetValueEx修改注册表时遇到的问题(转)
    读书笔记
    POJ 1182[并查集]
    读书笔记
    HihoCoder 1532 : 最美和弦
    HihoCode 1531 : 德国心脏病
  • 原文地址:https://www.cnblogs.com/vincent-vg/p/7351587.html
Copyright © 2011-2022 走看看