不要在公共场登陆 自己重要的用户名和密码; 不用的时候,【关闭浏览器】,只点【退出】,还是会有安全隐患。--没有绝对的安全

由于http的无状态性,总不能每次访问页面都要输入用户名和密码,所以为了保持状态,cookie就用到了。session本质也是生成唯一标示 sessionid存到cookie里面来进行用户状态保持,辨别。

那么,cookie是存在客户端的,如果被别有用心的人,【查看元素】,跨站攻击,流氓木马病毒等获取到 这个标示的cookie,则就可以使用这个cookie通过后台的校验,看到真实用户的信息。  {例如 下方 用来攻击的页面}

解决方案

cookie加密, 加密虽然看不懂cookie,但根本就不需要知道cookie是什么含义,请求的时候把【截取】到的cookie放入请求,则就可以绕过后台的判断,获取真实用户的信息,所以单纯加密无用。

cookie+ip等信息加密,可以抵挡大多数的恶意攻击,   因为  虽然获取到了 cookiie ,但是  恶意者的ip不和真实用户的相同,则可以校验出来,防止欺骗

但,网上查看好像ip也是可以被冒充的。还是有很大的安全隐患

最终的解决方案:

cookie + ip + 动态

请求正确一次,就清空一次,再重新赋值一个  唯一标示,那么   就算别人  窃取到了 cookie,只有在【用户  此次被获取cookie的请求,与下次请求  之前的时间     那个cookie才会起到欺骗效果。配合 ip等客户端的标示,应该可以  避免 cookie欺骗】

Perfect

cookie欺骗

用来攻击的页面

   <input type="text" name="name" value=""  placeholder='cookie名称' id='cn'/>
    <input type="text" name="name" value=""  placeholder='cookie值'  id='cv'/>
    <input type="button" name="name" value="cookie欺骗登陆" onclick='login()' />

<script>
 
    function login() {
        document.cookie = document.getElementById("cn").value + "=" + document.getElementById("cv").value;
        alert(document.cookie);
        window.location.href = "http://myjs.com/trick/index.aspx";//要攻击cookie欺骗登陆的网站
    }
//这里模拟只有一个cookie

</script>

登陆页面前台

    <form action="normal.aspx" method="post" runat='server'>
 
    <input type="text" name="name" value="" placeholder='请输入用户名 abc ' />
    <input type="password" name="pwd" value="" placeholder='请输入密码 123' />
    <input type="submit"  value="登陆"  />
 
    </form>
登陆页面后台

public partial class trick_normal : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            SetLogin();
        }
 
    }
 
 
    private void SetLogin()
    {
        string name = Request["name"];
        string pwd = Request["pwd"];
 
        if (name == "abc" && pwd == "123")//如果用户密码都正确
        {
            SafeTest.CheckLogin c = new CheckLogin();
 
            string userinfo = "name=abc|pwd=123";//模拟需要保存的用户信息
            c.SetSessionId(userinfo);
 
            Response.Redirect("index.aspx");
        }
        else
        {
            //登陆失败的各种处理,这里简单response
            Response.Write("登陆失败!");
            Response.End();
        }
 
 
 
 
    }

}

登陆后可访问的页面前端

  <div>
    登录可见
    </div>

登陆后可访问的页面后端

public partial class trick_index : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        CheckLogin c = new CheckLogin();
        c.Check();
 
        //展示页面
 
 
    }

}

登陆信息设置的类

namespace SafeTest
{
 
 
    public class CheckLogin
    {
        //验证是否登陆
        public void Check()
        {
            System.Web.HttpCookie cacheKEy = System.Web.HttpContext.Current.Request.Cookies["sessionId"];
            if (cacheKEy != null)
            {
                if (System.Web.HttpContext.Current.Cache[cacheKEy.Value] != null)
                {
//【这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里】
                    //使用登录信息
                    object userinfo = System.Web.HttpContext.Current.Cache[cacheKEy.Value];
                    SetSessionId(userinfo);
                    System.Web.HttpContext.Current.Cache.Remove(cacheKEy.Value);
 
                }
                else
                {
                    System.Web.HttpContext.Current.Response.Redirect("normal.aspx");
                }
            }
            else
            {
                System.Web.HttpContext.Current.Response.Redirect("normal.aspx");
            }
        }
 
 
 
 
        public  void SetSessionId(object obj)
        {        //设置 session ,  这里通过  cookie+guid+cache来保持会话标示 
 
            string guid = Guid.NewGuid().ToString();
         
            HttpCookie hc = new HttpCookie("sessionId", guid);
            System.Web.Caching.Cache ch = new System.Web.Caching.Cache();
 
            //Cache.Insert("key1", myFrequentlyAccessedData, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30)); 滑动过期时间
 
            //System.Web.HttpContext.Current.Cache.Insert(guid,obj,null,TimeSpan.Zero,DateTime.Now.AddMinutes(20)); 绝对过期时间
 
            System.Web.HttpContext.Current.Cache.Insert(guid, obj, null, System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromMinutes(20));
 
        
 
 
            System.Web.HttpContext.Current.Response.Cookies.Add(hc);
        }
 
 
    }
}

彻底解决cookie欺骗(有问题)的更多相关文章

  1. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  2. 解决cookie跨域访问.2

    v一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入 ...

  3. 通过COOKIE欺骗登录网站后台

    1.今天闲着没事看了看关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的知识,xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语 ...

  4. cookie欺骗

    1.什么是cookie欺骗改变cookie的值,发给服务器,就是cookie欺骗.正常情况下,受浏览器的内部cookie机制所限,每个cookie只能被它的原服务器所访问,我们操作不了原服务器. 2. ...

  5. asp中cookie欺骗/注入原理与防范

     一直以来sql注入被广泛关注,也有专门的防注系统代码.发现,如果代码不严谨也会有cookie欺骗/注入的情况.原来, 防注入系统没有注意到 Cookies 的问题!这里以ASP为例,分析一下cook ...

  6. 用wget实现cookie欺骗

    用wget实现cookie欺骗 . 分析登录界面的html代码 页面在 http://bbs.linuxeden.com/ <form. id="loginform" met ...

  7. bugku题目“cookie欺骗”

    先上成功截图 题目写的cookie欺骗,但其实是一道考察写脚本能力和代码审计类的题目,首先观察开始的页面 可以看到只有这一串字母,粗略观察可以认为这绝对不是密码,而是胡乱写上的字符,在观察页面源代码后 ...

  8. 进阶——scrapy登录豆瓣解决cookie传递问题并爬取用户参加过的同城活动©seven_clear

    最近在用scrapy重写以前的爬虫,由于豆瓣的某些信息要登录后才有权限查看,故要实现登录功能.豆瓣登录偶尔需要输入验证码,这个在以前写的爬虫里解决了验证码的问题,所以只要搞清楚scrapy怎么提交表单 ...

  9. P3P解决cookie存取的跨域问题

    最近在做一个流量统计的东西的时候,偶然发现IE在对iframe里面的页面写Cookie的时候有一些安全限制,导致读取Cookie不成功,找了好长时间的解决办法,重要找到如下的办法: 1.页面里的COO ...

随机推荐

  1. Heritrix源码分析(九) Heritrix的二次抓取以及如何让Heritrix抓取你不想抓取的URL

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/644396       本博客已迁移到本人独立博客: http://www.yun5u ...

  2. OpenGL ES之GLSurfaceView学习一:介绍

    原文地址::http://120.132.134.205/cmdn/supesite/?uid-5358-action-viewspace-itemid-6527 GLSurfaceView是一个视图 ...

  3. 【转载】HBase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  4. nginx爆出新漏洞 最低限度可造成DDos攻击

    5月9日消息:国内某安全厂商称HTTP代理服务器nginx爆出远程栈缓冲区溢出漏洞,攻击者利用此漏洞可能造成栈溢出,从而执行任意代码,最低限度可造成拒绝服务攻击.目前,官方已经发布安全公告以及相应补丁 ...

  5. 【转】从外行的视角尝试讲解为什么这回丰田栽了【全文完】【v1.01】

    转自:http://club.tgfcer.com/thread-6817371-1-1.html  [第一部分]背景简介 前几年闹得沸沸扬扬的丰田刹不住事件最近又有新进展.十月底俄克拉荷马的一次庭审 ...

  6. location.hash来保持页面状态

    /*本例是为了在客户端页面返回时保存状态,采用hash值记录的模式,为了使用方便所写的存取hash值的库,时间仓促,望指出错误.*/var pageStateHash = { hashArray: [ ...

  7. hdu 1527 取石子游戏(Wythoff Game)

    题意:Wythoff Game 思路:Wythoff Game #include<iostream> #include<stdio.h> #include<math.h& ...

  8. PyPI镜像网站

    镜像列表:http://www.pypi-mirrors.org/ 清华镜像:http://e.pypi.python.org/

  9. HTTP协议的状态码

    对于Web编程人员来说,熟悉了解HTTP协议的状态码是很有必要的,很多时侯可能根据HTTP协议的状态码很快就能定位到错误信息!今天整理了一下所有HTTP状态码. HTTP状态码(HTTP Status ...

  10. oracle 数据库远程导出

    exp 用户名/密码@IP:端口/数据库名 file=文件路径 full=y; exp scebm1/ebm@10.3.10.16:1521/scebm file=D:scebm20140527.dm ...