首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 笔记本电脑 | 北大青鸟 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 正文

慎用ASP.Net的validateRequest="false"

  关于存在Rich Text Editor的页面应该如何处理?

  如果页面有富文本编辑器的控件的,那么必然会导致有类的HTML标签提交回来。在这种情况下,我们不得不将validateRequest="false"。那么安全性怎么处理?如何在这种情况下最大限度的预防跨站脚本攻击呢?

  根据微软的建议,我们应该采取安全上称为“默认禁止,显式允许”的策略。

  首先,我们将输入字符串用 HttpUtility.HtmlEncode()来编码,将其中的HTML标签彻底禁止。

  然后,我们再对我们所感兴趣的、并且是安全标签,通过Replace()进行替换。比如,我们希望有""标签,那么我们就将""显式的替换回""。

  示例代码如下:

以下是引用片段:
void submitBtn_Click(object sender, EventArgs e)
  ...{
    // 将输入字符串编码,这样所有的HTML标签都失效了。
    StringBuilder sb = new StringBuilder(
                            HttpUtility.HtmlEncode(htmlInputTxt.Text));
    // 然后我们选择性的允许<b> 和 <i>
    sb.Replace("<b>", "<b>");
    sb.Replace("</b>", "");
    sb.Replace("<i>", "<i>");
    sb.Replace("</i>", "");
    Response.Write(sb.ToString());
  }

  这样我们即允许了部分HTML标签,又禁止了危险的标签。

  根据微软提供的建议,我们要慎重允许下列HTML标签,因为这些HTML标签都是有可能导致跨站脚本攻击的。

以下是引用片段:
  • <applet>
  • <body>
  • <embed>
  • <frame>
  • <script>
  • <frameset>
  • <html>
  • <iframe>
  • <img>
  • <style>
  • <layer>
  • <link>
  • <ilayer>
  • <meta>
  • <object>
  •   可能这里最让人不能理解的是<img>。但是,看过下列代码后,就应该明白其危险性了。

    以下是引用片段:
    <img src="javascript:alert('hello');">
    <img src="java script:alert('hello');">
    <img src="java script:alert('hello');">

      通过<img>标签是有可能导致Javascript执行的,这样攻击者就可以做他想伪装的任何事情。

      关于<style>也是一样:

    以下是引用片段:
    <style TYPE="text/javascript">...
      alert('hello');
    </style>

    上一页  [1] [2] 

    【责编:Peng】

    中国IT教育

    相关产品和培训
    文章评论
     友情推荐链接
     认证培训
     专题推荐

     ·开源软件测试工具学习专题
     ·JSP Web开发 入门基础到高手进阶教程…
     ·JavaFX—是Java桌面的新希望么?
     ·安全至上 .NET开发安全策略…
     ·测试用例设计之道-测试用例学习专题
     ·面向Java开发人员的Scala指南
     ·Java设计模式之实例详解
     ·Oracle数据库11g 面向DBA和开发人员的重要新特性…
     ·桌面应用软件编程 J2SE技术详解…
     ·我“炫”我精彩-------WPF开发教程
     今日更新
     社区讨论
     博客论点
     频道精选
     Dotnet频道相关导航