通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

在ASP.NET中防止注入攻击

http://www.iyit.net  日期:2006-6-2 15:10:28  来源:  点击:
参加讨论
<asp:CustomValidator
ID="CustomValidator1" Runat="server"
ErrorMessage="Invalid date. Enter a date in the future."
ControlToValidate="futureDatetxt"
OnServerValidate="ValidateDateInFuture">
</asp:CustomValidator>
<br />
<asp:Button ID="submitBtn" Runat="server" Text="Submit" />
</div>
</form>
</body>
</html>

  注意 上面的代码使用的方法DateTime.TryParse是ASP.NET2.0提供的新方法.

  过滤自由文本字段

  过滤输入,你需要使不安全的输入不被当作代码来对待.例如,你的程序使用户不能读取共享数据库内的数据,你首先需要过滤数据使它们在输出的时候没有危险.使用HttpUtility.HtmlEncode方法先对输入值进行编码.

  允许有限的输入HTML代码

  1. 在@ Page页面元素内加以下字段ValidateRequest = "false"禁用ASP.NET请求验证
  2. 使用HtmlEncode方法对输入的字符串进行编码
  3. 使用StringBuilder对象,调用它的Replace方法对字符中的HTML进行替换
  下面的代码给出了这种办法的示例.此页面设置ValidateRequest = "fasle"禁用了ASP.NET请求验证.它的HTML编码为了显示简单的文本格式允许使用<b>和<i>标记.

<%@ Page Language="C#" ValidateRequest="false"%>
<script runat="server">
void submitBtn_Click(object sender, EventArgs e)


{

//
Encode the string input

StringBuilder sb = new StringBuilder(
HttpUtility.HtmlEncode(htmlInputTxt.Text));

//
Selectively allow and <i>

sb.Replace("<b>", "<b>");
sb.Replace("</b>", "");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "");
Response.Write(sb.ToString());
}
</script>
<html>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="htmlInputTxt" Runat="server"
TextMode="MultiLine" Width="318px"
Height="168px"></asp:TextBox>
<asp:Button ID="submitBtn" Runat="server"
Text="Submit" OnClick="submitBtn_Click" />
</div>
</form>
</body>
</html>

  验证查询字串的值

  验证查询字串的长度,范围,格式和类型.通常,你使用一个合并的正则表达式来完成以下任务:
  • 约束输入值
  • 设置明确的范围检查条件
  • 指定输入的类型并将它转换成ASP.NET平台下的类型,处理任何由类型转换引发的异常下面的代码示例演示了使用Regex类验证由查询字串传递过来的名字字符串

    void Page_Load(object sender, EventArgs e)


    {
    if (!System.Text.RegularExpressions.Regex.IsMatch(
    Request.QueryString["Name"], @"^[a-zA-Z'.\s]{1,40}$"))
    Response.Write("Invalid name parameter");
    else
    Response.Write("Name is " + Request.QueryString["Name"]);
    }

      验证Cookie值

      象查询字串这样被保存在Cookie里面的值很容易被用户修改.同样地验证这些值的长度,范围,格式和类型.
    验证文件和URL地址

      如果你的程序允许输入文件名,文件地址或者文件存放路径,你需要验证它们的格式是否正确并且根据你的程序实际情况它指向一个有效的位置.如果此步验证失败,你的程序可能会被错误地要求访问文件.

      验证文件路径

      为了避免你的程序被用户利用来访问文件,防止接受用户编写代码输入的文件或者文件路径.例如 :
  • 如果你接受输入文件名,使用System.IO.Path.GetFileName方法来取得文件的全称
  • 如果你不得不接受输入文件路径,使用System.IO.Path.GetFullPath来取得完整的文件路径

      使用MapPath方法防止跨应用程序的映射


      如果你使用MapPath方法在服务器上映射一个提供的虚拟目录到一个物理目录,使用Request.MapPath方法的一个带bool参数的重载版本来防止跨应用程序的映射.下面是此项技术的示例代码 :

    本新闻共6页,当前在第4页  1  2  3  4  5  6  


    编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
    上一篇:ASP.NET 2.0站点登录、导航与权限管理
    下一篇:ASP.NET页面中标题单点解决方案
    转载请注明来源:www.iyit.net
    特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

  •  相关文章
    在ASP.NET中自动给URL加上超链接 ASP.NET Atlas ListView显示列表数据 ASP.NET编程入门随想之信客
    用VS2005实现ASP.NET2.0移动开发 在ASP.NET Atlas中创建自定义Behavior ASP.NET 2.0中轻松实现网站换肤
    ASP.NET 2.0 中的代码隐藏和编译 ASP.NET入门随想之服务器控件模型 ASP.NET页面中标题单点解决方案
    ASP.NET 2.0站点登录、导航与权限管理 asp.net面试试题收集 ASP.NET服务器控件编程之热身运动
    ASP.NET 2.0 中的异步页功能应用 用ASP.NET开发Web服务的五则技巧 ASP.NET中Cookie编程的基础知识(1)
    ASP.NET中Cookie编程的基础知识(2) ASP.NET中Cookie编程的基础知识(3) ASP.NET中Cookie编程的基础知识(4)
    ASP.NET中Cookie编程的基础知识(5) ASP.NET中Cookie编程的基础知识(6) ASP.NET 2.0移动开发入门之基础
    ASP.NET中文件上传下载方法集合 ASP.NET服务器控件之RenderContents ASP.NET2.0服务器控件之Render方法
    最新更新 热点排行 推荐新闻
    在ASP.NET中自动给URL加上超链接
    ASP.NET Atlas ListView显示列表数据
    ASP.NET编程入门随想之信客
    用VS2005实现ASP.NET2.0移动开发
    在ASP.NET Atlas中创建自定义Behavior
    在ASP.NET中自动给URL加上超链接
    ASP.NET Atlas ListView显示列表数据
    ASP.NET编程入门随想之信客
    用VS2005实现ASP.NET2.0移动开发
    在ASP.NET Atlas中创建自定义Behavior
    ASP.NET 2.0中轻松实现网站换肤
    ASP.NET 2.0 中的代码隐藏和编译
    ASP.NET入门随想之服务器控件模型
    ASP.NET页面中标题单点解决方案
    在ASP.NET中防止注入攻击
    为ASP.NET 2.0菜单控件增加target属性
    ASP.NET 2.0 中的异步页功能应用
    将Asp.net页面输出为HTML
    HTML简介
    设定Cookie 变量的生命周期
    优秀公益广告作品欣赏(8)
    java数据类型转换
    QQ最新版下载 2006 beta2 体验新感受 
    Windows XP专业版IIS连接数的更改
    优秀公益广告作品欣赏(7)
    Office2007简体中文版浮出水面 美图抢
    优秀公益广告作品欣赏(6)
    WEB服务器配置全攻略(三)
    优秀公益广告作品欣赏(4)
    优秀公益广告作品欣赏(1)
    在ASP.NET中防止注入攻击
    ASP.NET 2.0 中的异步页功能应用
    在ASP.NET中防止注入攻击
    Linux操作系统12则经典应用技巧
    浅谈Linux优化及安全配置的个人体会
    解决局域网不能互相访问之全攻略
    WIN 2000简单的入侵常识
    用Win 2003架设邮件服务器
    硬盘分区消失,解决方法!
    传统计算机病毒传播能力破坏性在提高
    内存为何有“两面性”
    AMD水货盒装CPU识别方法
     友情链接
    设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
    Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
    网站合作、广告联系QQ:147007642、466949678
    易特网络技术 点击这里给我发消息