基于ASP.NET技术的安全网站设计

来源 :商场现代化 | 被引量 : 0次 | 上传用户:wallacedfgf
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] ASP.NET技术以其强大的功能在动态网页设计中得到广泛应用。由于ASP.NET本身的缺陷和程序员安全意识不强,使得应用ASP.NET技术的网站存在各种安全问题。本文结合ASP.NET网站的开发经验,讨论了基于ASP.NET网站中常见的安全漏洞,并给出了相应的防范策略。
  [关键词] ASP.NET攻击安全防范
  
  一、前言
  
  Web服务应用正在爆炸式增长,越来越多的应用被推出到防火墙之外,安全性脆弱的Web应用面临的风险也有增无减。同时,为了在紧迫的时限之前快速完成应用开发,开发者面临的压力越来越大。因此注重编写代码时的安全问题,同时投入必要的资源,才能为未来Web的安全应用做好准备。
  
  二、ASP.NET程序设计安全性分析
  
  1.信息隐藏设置
  在ASP.NET应用中,几乎所有HTML页面的__VIEWSTATE隐藏域中都可以找到有关应用的信息。由于__VIEWSTATE是BASE64编码的,所以常常被忽略,但攻击者可以方便地解码BASE64数据,从而得到__VIEWSTATE中提供的详细资料。
  要解决这个问题,只需设置EnableViewStatMAC=”true”,启用__VIEWSTATE数据加密功能。然后将machineKey验证类型设置成3DES,要求ASP.NET用Triple DES对称加密算法加密ViewState数据。
  
  2.用户输入的校验分析
  在Web应用开发中,开发者最大的失误往往是无条件的信任用户输入、总是通过浏览器和服务器交互,从而打开了攻击Web应用的大门。
  因此,只有严密地验证用户输入的合法性,才能有效抵抗入侵者的攻击。应用程序可以用多种方法执行验证,例如,在认可用户输入之前执行验证,确保用户的输入中只包含合法的字符,并且所有输入域的内容长度都没有超过范围。必要时不仅采取强制性的长度限制策略,而且还可以对输入内容按照明确定义的特征集执行验证。
  应在所有的需要通过网络输入的地方进行验证,比如文本框和其他表单输入字段,字符串查询参数等。过滤策略应该是只允许正确的输入,拒绝非法输入。这是因为定义正确的输入策略比过滤所有的非法输入要容易得多。
  要验证表单里面的HTML控件输入字段,在服务器端代码中可以使用Regex正则表达式类型进行字符串的验证,ASP.NET中通过正则表达式验证控件(RegularExpresionValidator)实现。
  
  3.跨站攻击及防范
  跨站脚本执行是指将恶意的用户输入嵌入到应答(HTML)页面。例如,下面的ASP.NET页面虽然简单,却包含着一个重大的安全缺陷(阴影处代码存在漏洞)。
  <%@ Page Language=“vb” %>
  <asp:Label id=“Label1”runat=“server”>标签文字</asp:Label>
  <form method=“post”runat=“server”ID=“Form1”>
  请在此处输入反馈信息<br>
  <asp:Textbox ID=“feedback”runat=“server”/><br>
  <asp:Button id=“cmdSubmit”runat=“server”
  Text=“提交!”OnClick=“do_feedback”>
  </asp:Button>
  </form>
  <script runat=“server”>
  Sub do_feedback(sender As Object, e As System.EventArgs)
  Label1.Text=feedback.Text
  End Sub
  </script>
  要纠正本例中的错误,只要在下面代码中加入一个HtmlEncode调用即可:
  Label1.Text=Server.HtmlEncode(feedback.Text)
  这样,应答HTML流将包含用户输入内容的HTML编码版本,浏览器就不会执行用户输入的JavaScript代码,从而保证代码的安全。同理,如果需要获取用户输入的URL参数,应使用HttpUtility.UrlEncode方法对地址字符串编码。
  HttpUtility.UrlEncode(urlString);
  
  4.SQL注入攻击及防范
  (1)SQL注入攻击原理。盲目信任用户输入是保障Web应用安全的第一敌人。用户输入的主要来源是HTML表单中提交的参数,如果不能严格地验证这些参数的合法性,就有可能危及服务器的安全。
  下面的代码查询后台SQL Server数据库,假设user和password变量的值直接取自用户输入:
  SqlDataAdapter my_query = new SqlDataAdapter(
  “SELECT * FROM accounts WHERE acc_user=”+ user +“ AND acc_password=”+ password, the_connection);
  从表面上看,这几行代码毫无问题,实际上却可能引来SQL注入式攻击。攻击者只要在user输入域中输入“OR 1=1”,就可以顺利登录系统,或者只要在查询之后加上适当的调用,就可以执行任意Shell命令:
  ‘; EXEC master xp_cmdshell(shell command here)—‘
  (2) SQL注入攻击防范。要防止上述攻击行为,有以下三种方法。
  第一种方法是禁止引号之类的特殊字符输入。
  第二种方法是限定输入域的内容必须属于某个合法字符的集合,例如“[a-zA-Z0-9]*”。
  为了避免注入式攻击请使用SQL的参数方式。如果使用参数集合,输入的内容将被当作文本值来对待,数据库不会执行包含在其中的代码。使用参数集方式可以严格限定输入的类型和长度。如果输入型超出范围将会触发异常。
  第三种方法是使用SQL参数API,让编程环境的底层API来构造查询。
  使用这些API时,开发者或提供一个查询模板,或提供一个过程,然后指定一系列的参数值,由底层API将参数值嵌入到查询模板,然后将构造出来的查询提交给服务器执行。这种办法确保参数能够正确嵌入。例如,系統将对引号进行转义处理,从根本上杜绝SQL注入攻击的发生,同时,在表单中引号仍是一个允许输入的有效字符。
  
  三、基于ASP.NET的网站安全性检测
  
  由于客户需求不断变化,员工流动性强,所以对开发者开发健壮、高质量的代码提出更高的要求。虽然对所有开发者进行代码安全技术的培训是必要的,但不可否认,自动检测代码安全漏洞的工具对安全代码设计也大有裨益。
  到目前为止,开发者常用的工具只能涵盖功能测试的特定方面,例如性能测试,故障点侦查。人工检查代码有着许多局限,而且要求开发者具有丰富的经验,所以对于编写高质量的web应用来说,面向应用程序安全的检测工具(如Domain、HDSI、CSAI等)是十分关键的。
  要迅速提高应用的质量和安全性,最有效的办法是给开发者提供一个自动测试应用的工具。如果在单元测试期间,工具能够检测出应用的安全缺陷,并将修补建议嵌入到代码之中,开发者就能立即找出代码中存在的错误,这不仅方便了现有错误的修改,而且也有助于避免将来再犯同样的错误,不断地提高代码抗攻击的能力。
  
  四、结论
  
  在使用ASP.NET技术建站时,包括上述安全漏洞在内的一些代码安全问题都可能出现,因此需从服务器、程序员等方面加强安全防范。对服务器来说,要关掉所有用不到的网络服务,对提供网络服务的软件(如Apache、MySQL、iis等)经常进行更新,并检查各自的程序日志以及时发现入侵现象。对程序员来说,书写代码时要注意严格过滤用户的输入数据,并经常使用工具对ASP.NET网站进行安全检测。
  参考文献:
  [1][美]Mark M. Burnett著良忠译:拒绝黑客-ASP.NET Web应用程序安全性剖析[M].北京:电子工业出版社, 2005年
  [2]张郭军:企业信息网络系统安全技术分析. 商场现代化[J]. 2006, 4:35~36
  [3]中国黑客联盟, http://www.cnhacker.com
  [4]华夏黑客同盟, http://77169.com
其他文献
[摘要] WTO的专家组程序是WTO的争端解决机制的重要部分。该文从WTO争端解决机制所确立的争端解决手段之间的关系以及专家组程序本身的本质特征出发,探讨了专家组程序的司法性。  [关键词] WTO 专家组程序 司法性    在WTO体制下的专家组程序是WTO争端解决程序的中心。根据DSU第3条的规定,WTO争端解决机制的宗旨是确保争端的积极解决,争端解决机制的首要目标,是使当事方能够达成双方满意
期刊
[摘要] 商品房预售制度是房地产市场上卖方处于优势地位时的一种必然的制度选择。在目前我国尚不能取消此制度的背景下,应尽力寻求合理的方式对预购方的合法权益进行保护。本文结合我国合同法对格式条款的相关规定,对预购方利益的保护提出了完善建议。  [关键词] 商品房预售 格式条款 法律规制    商品房预售合同多采格式合同形式制成,和一般格式合同一致的一点是,最易出現争议的格式条款部分依然是合同中关于免责
期刊
[摘要] 根据现行法律规定,劳动者在出现伤害后提起工伤赔偿救济,往往会陷入无休止的程序怪圈中,工伤赔偿权利得不到及时有效的保障。本文基于司法权与行政权的关系,分析了法院(仲裁委员会)对劳动部门作出的工伤认定的证据审查模式,认为工伤认定在工伤救济程序中应当做一种普通的民事证据接受司法权的审查,由此达到优化劳动者工伤救济程序的目的,节约劳动者维权成本。  [关键词] 程序缺陷 司法审查 工伤认定 重构
期刊
一、货币理论概要    马克思从根本上回答了商品怎样、为什么和通过什么成为货币的等问题,提示了货币的起源和本质,全面地论证了货币的职能和货币流通规律,从而制定了科学的货币理论。马克思的货币理论可以概括为三个部分:货币的起源和本质、货币的职能、货币流通规律的理论。  关于货币的起源和本质问题,马克思在《资本论》第105页指出:“货币结晶是交换过程的必然产物。”商品交换是个人过程和社会过程的对立统一运
期刊
[摘要] 本文运用Granger因果检验和扩展GARCH模型实证研究了深圳A股市场交易量与股价之间的关系。得到了如下结论:交易量变量和收益率、波动率存在双向Granger因果关系;交易量只能在有限程度内解释波动率的持续性,深圳股市还存在其他影响波动率持续性的因素。  [关键词] 交易量 波动性 Granger因果关系 GARCH模型    一、引言  证券市场中的量价关系是指证券价格的波动与交易量
期刊
[摘要] 目前人们对BOT的内涵、形态及其特征还缺乏统一的认识,本文对BOT的内涵、形态及其特征进行了必要的探究,期望对BOT的理论与实践有所裨益。  [关键词] BOT 内涵 形态 特征 探究    一、BOT的内涵   BOT是英文Build Operate Transfer 的缩写,一般中文直译为(特定项目的)建造、经营和移交。  关于BOT的含义,目前国内外还没有一个公认的定义。不少人对B
期刊
[摘要] 文章介绍了CPFR的概念及其产生背景,在简要分析零售市场特点的基础上,详细介绍了零售企业CPFR模型及其步骤,指出零售企业实施CPFR的三个阶段、九个步骤,文章最后介绍了零售企业实施CPFR的具体措施。  [关键词] CPFR零售协同规划预测补给    一、引言    随着零售市场需求日趋多样化和个性化,各种产品竞争日益激烈,产品更新速度日益加快,产品市场需求的极度波动性和难以预测性及客
期刊
[摘要] 在大量的财务资料整理过程中,作者把电子数据处理的重复操作流程和方法加以归纳、加工,形成标准化的数据处理模型;据此,利用VFP语言编写的数据转换通用程序,经多年的实际应用,效果极为显著,对规模较大、数据处理频繁单位的财务管理工作,具有重要的参考与应用价值。  [关键词] VFP语言程序 数据表转换 设计与实现    一、 应用分析   在网络经济时代,大型数据库系统以其优异性能,占据大部分
期刊
[摘要] 本文从国际服务贸易的内涵出发,结合我国服务贸易发展状况,分析了我国服务贸易存在的问题,并提出了相应的对策建议。  [关键词] 服务贸易比较优势竞争优势    一、国际服务贸易与我国服务贸易发展现状    1.国际服务贸易的内涵  依照世界贸易组织《服务贸易总协定》(GATS),国际服务贸易包括四个方面:(1)过境交付:从一成员的境内向另一成员的境内提供服务;(2)境外消费:从一成员的境内
期刊
[摘要] FDI技术溢出的作用机制主要通过技术的示范与模仿、市场竞争、产业关联、人力资本流动和R&D当地化来实现,五种机制相互渗透、相互促进,共同推动国际技术的转移和扩散。  [关键词] FDI技术溢出技术进步  外国直接投资(Foreign Direct Investment, FDI)是国际技术扩散的一条重要渠道。作为国际资本流动的主要形式,FDI对东道国经济发展的影响一直受到各国经济学家的密
期刊