zoukankan      html  css  js  c++  java
  • CSRF的防御之HttpOnly

    CSRF攻击的全称是跨站请求伪造(cross site request forgery),是一种对网站的恶意利用,尽管听起来跟XSS跨站脚本攻击有点相似,但事实上CSRF与XSS差别很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。CRSF能做的事情包括利用你的身份发邮件、发短信、进行交易转账等等,甚至盗取你的账号。

               

      C#代码实现,本想自己写一个,但是发现万能的MSDN上避免有个现成的果断拿来之,MSDN上的啰嗦:

      

    该属性有助于缓解跨站点脚本威胁,这种威胁可能导致 Cookie 被窃取。 窃取的 Cookie 可以包含标识站点用户的敏感信息,如 ASP.NET 会话 ID 或 Forms 身份验证票证,攻击者可以重播窃取的 Cookie,以便伪装成用户或获取敏感信息。 如果兼容浏览器接收到 HttpOnly Cookie,则客户端脚本不能对它进行访问。
    警告说明
    将 HttpOnly 属性设置为 true,并不能防止对网络频道具有访问权限的攻击者直接访问该 Cookie。 针对这种情况,应考虑使用安全套接字层 (SSL) 来提供帮助。 工作站的安全也很重要,原因是恶意用户可能使用打开的浏览器窗口或包含持久性 Cookie 的计算机,以合法用户的标识获取对网站的访问。

      

          

    <%@ Page Language="C#" %>
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
        void Page_Load(object sender, EventArgs e)
        {
            // Create a new HttpCookie.
            HttpCookie myHttpCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
    
            // By default, the HttpOnly property is set to false 
            // unless specified otherwise in configuration.
    
            myHttpCookie.Name = "MyHttpCookie";
            Response.AppendCookie(myHttpCookie);
    
            // Show the name of the cookie.
            Response.Write(myHttpCookie.Name);
    
            // Create an HttpOnly cookie.
            HttpCookie myHttpOnlyCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
    
            // Setting the HttpOnly value to true, makes
            // this cookie accessible only to ASP.NET.
    
            myHttpOnlyCookie.HttpOnly = true;
            myHttpOnlyCookie.Name = "MyHttpOnlyCookie";
            Response.AppendCookie(myHttpOnlyCookie);
    
            // Show the name of the HttpOnly cookie.
            Response.Write(myHttpOnlyCookie.Name);
        }
    </script>
    
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>ASP.NET Example</title>
    </head>
    <body>
    <script type="text/javascript">
    function getCookie(NameOfCookie)
    {
        if (document.cookie.length > 0) 
    { 
        begin = document.cookie.indexOf(NameOfCookie+"="); 
        if (begin != -1)
       { 
        begin += NameOfCookie.length+1; 
          end = document.cookie.indexOf(";", begin);
          if (end == -1) end = document.cookie.length;
          return unescape(document.cookie.substring(begin, end));       
          } 
      }
    return null;  
    }
    </script>
    
    <script type="text/javascript">
    
        // This code returns the cookie name.
        alert("Getting HTTP Cookie");
        alert(getCookie("MyHttpCookie"));
    
        // Because the cookie is set to HttpOnly,
        // this returns null.
        alert("Getting HTTP Only Cookie");
        alert(getCookie("MyHttpOnlyCookie"));
    
    </script> 
    
    
    </body>
    </html>

     相关资料:http://msdn.microsoft.com/zh-cn/library/ms533046(vs.85).aspx

      http://msdn.microsoft.com/zh-cn/library/ms533046(vs.85).aspx

      http://kb.cnblogs.com/page/115136/

      图片来自陈康贤<<大型分布式网站架构设计与实践>>

  • 相关阅读:
    建立可扩展的silverlight应用框架 step3
    建立可扩展的silverlight应用框架 step7 final
    Silverlight入门:第三部分 数据访问
    建立可扩展的silverlight 应用框架 step6:整理导航模块“LeftNav”
    Silverlight入门:第一部分 开发工具与程序入门
    [Silverlight入门系列]使用MVVM模式(8):ViewModel进一步分离出Services
    Silverlight WCF RIA服务 (三)创建一个RIA Services Solution
    Silverlight入门
    Silverlight入门:第五部分 整合其它控件
    Silverlight WCF RIA服务(十一)数据 1
  • 原文地址:https://www.cnblogs.com/wangn/p/4170781.html
Copyright © 2011-2022 走看看