登录论坛 | 注册会员 设为首页 | 收藏本站
当前位置 : 首页>软件学院>程序开发>ASP教程>正文
 
Web开发中常见的安全缺陷及解决办法

http://www.dbit.cn 2008-6-29 20:56:21  来源:本站  编辑:张贺兵
 


  ■ 解决方案

  域验证器是一种让ASP.NET开发者对域的值实施限制的机制,例如,限制用户输入的域值必须匹配特定的表达式。

  要防止上述攻击行为得逞,第一种办法是禁止引号之类的特殊字符输入,第二种办法更严格,即限定输入域的内容必须属于某个合法字符的集合,例如“[a-zA-Z0-9]*”。   

  2.2 篡改参数之二

  ◎ 避免验证操作的漏洞

  然而,仅仅为每个输入域引入验证器还不能防范所有通过修改参数实施的攻击。在执行数值范围检查之时,还要指定正确的数据类型。

  也就是说,在使用ASP.NET的范围检查控件时,应当根据输入域要求的数据类型指定适当的Type属性,因为Type的默认值是String。

  

  

  ■ 风险分析

  由于没有指定Type属性值,上面的代码将假定输入值的类型是String,因此RangeValidator验证器只能确保字符串由0-9之间的字符开始,“0abcd”也会被认可。

  ■ 解决方案

  要确保输入值确实是整数,正确的办法是将Type属性指定为Integer:

  

  

   MaximumValue="9" Type="Integer"

  2.3 信息泄漏

  ◎ 让隐藏域更加安全

  在ASP.NET应用中,几乎所有HTML页面的__VIEWSTATE隐藏域中都可以找到有关应用的信息。由于_VIEWSTATE是BASE 64编码的,所以常常被忽略,但黑客可以方便地解码BASE 64数据,用不着花什么力气就可以得到__VIEWSTATE提供的详细资料。

  ■ 风险分析

  默认情况下,__VIEWSTATE数据将包含:

  ⑴ 来自页面控件的动态数据。

  ⑵ 开发者在ViewState中显式保存的数据。

  ⑶ 上述数据的密码签字。

  ■ 解决方案

  设置EnableViewStatMAC="true",启用__VIEWSTATE数据加密功能。然后,将machineKey验证类型设置成3DES,要求ASP.NET用Triple DES对称加密算法加密ViewState数据。

  2.4 SQL注入式攻击

  ◎ 使用SQL参数API

  正如前文“篡改参数”部分描述的,攻击者可以在输入域中插入特殊字符,改变SQL查询的本意,欺骗数据库服务器执行恶意的查询。

  ■ 风险分析

  恶意查询有可能获取后端数据库保存的任何信息,例如客户信用卡号码的清单。

  ■ 解决方案

  除了前面介绍的办法——用程序代码确保输入内容只包含有效字符,另一种更加健壮的办法是使用SQL参数API(例如ADO.NET提供的API),让编程环境的底层API(而不是程序员)来构造查询。

  使用这些API时,开发者或者提供一个查询模板,或者提供一个存储过程,然后指定一系列的参数值,由底层API将参数值嵌入到查询模板,然后将构造出来的查询提交给服务器查询。这种办法的好处是确保参数能够正确地嵌入,例如,系统将对引号进行转义处理,从根本上杜绝SQL注入式攻击的发生。同时,在表单中引号仍是一个允许输入的有效字符,这也是使用底层API的一个优点。

  按照这种思路修改前文“篡改参数”部分的例子,结果如下:

  SqlDataAdapter my_query = new SqlDataAdapter("SELECT * FROM accounts

   WHERE acc_user= @user AND acc_password=@pass", the_connection);

  SqlParameter userParam = my_query.Select_Command.Parameters.Add(

   "@user",SqlDb.VarChar,20);

  userParam.Value=user;

  SqlParameter passwordParam = my_query.Select_Command.Parameters.Add(

   "@",SqlDb.VarChar,20);

  passwordParam.Value=password;

  2.5 跨站脚本执行   

  ◎ 对外发的数据进行编码

  跨站脚本执行(Cross-site scripting)是指将恶意的用户输入嵌入到应答(HTML)页面。例如,下面的ASP.NET页面虽然简单,却包含着一个重大的安全缺陷:

    <%@ Page Language="vb" %>

  

   标签文字

  


  



   请在此处输入反馈信息


  


  

   Text="提交!" OnClick="do_feedback">

  


  


  

  ■ 风险分析

  攻击者可以用JavaScript代码构造一个恶意的查询,点击链接时JavaScript就会运行。举例来说,脚本可以通过下面的用户输入来嵌入:

  

  ■ 解决方案

  在一个双层的安全体系中,对HTML页面中出现的外发用户数据执行输入验证和HTML编码,确保浏览器只把用户输入数据当成纯粹的文本,而不是其他具有特殊含义的内容,例如HTML代码、JavaScript脚本。

  对于本例,只要加入一个HtmlEncode调用即可:

  Label1.Text=Server.HtmlEncode(feedback.Text)

  这样,应答HTML流将包含用户输入内容的HTML编码版本,也就是说,浏览器不会执行用户输入的JavaScript代码,因为根本不存在HTML的

本新闻共2页,当前在第2页  1  2  

 
收藏】【打印】【进入论坛
  相关文章:

·惠普WebOS设备成败关键看应用程序
·企业选择Web木马防护工具五大标准
·Web服务器访问失败故障处理技巧
·应对WEB威胁 用户必须了解的三件事
·Web服务器维护和安全管理技巧3则
·十个步骤打造安全的个人Web服务器 
·教你打好WEB服务器安全攻坚战
·让你的Web服务器日志文件更安全 
·紧急处理Web服务器访问失败故障
·Web服务器安装和运行FTP操作步骤
·10个WEB设计戒律和10个设计师戒律

 
 
 
 
最新文章

中关村艳照门女主角详记录高清组图 
大连护士门大尺度艳照高清组图
iPhone女孩微博爆红 最宝贵东西换iPhon
反恐精英之父内维尔:改变电脑游戏销售
团购网站黎明之前:中国市场惨烈厮杀不
团购鼻祖Groupon中国揭秘:快与慢的商业
Spil Games发布新的品牌形象
1800配置一台主机 不要显示器
联想V360笔记本模特写真
爱国者第四代移动硬盘将面市、低电压保

 
推荐文章
1
2
3
4
5
6
7
8
9
10
iPhone女孩微博爆红 最宝贵东西换
大连护士门大尺度艳照高清组图
中关村艳照门女主角详记录高清组
苹果员工中毒门
宫如敏不雅照疯传 看张馨予韩一菲
深耕市场 永续经营——专访百脑汇
优派专业电子书 让您回家旅途多姿
揭晓百万大奖三星bada魅力绽放中
大明龙权“江湖英雄会”全国PK大
永恒之塔校园达人挑战赛完美落幕
八卦图解 More>>
iPhone女孩微博爆红 最宝贵东西换 大连护士门大尺度艳照高清组图
中关村艳照门女主角详记录高清组 宫如敏不雅照疯传 看张馨予韩一菲