网站漏洞分类、影响和解决方案.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网站漏洞分类、影响和解决方案

典型网站漏洞 分类、影响及解决方案 (V1.0) 中国移动通信集团安徽有限公司 二〇一〇年九月 目录 一、 典型网站漏洞分类 3 二、 典型网站漏洞影响及解决方案 3 1、 SQL注入漏洞 3 2、 跨站漏洞 9 3、 XPATH注入漏洞 14 4、 默认测试用例文件 15 5、 管理后台登陆入口 16 6、 应用程序错误引起的信息泄露 16 7、 备份文件造成的源代码泄漏 17 8、 存在电子邮件地址 18 9、 无效链接 18 10、 Web应用默认目录 19 典型网站漏洞分类 根据风险等级,网站漏洞通常可分为高风险、中风险和低风险三种。其中高风险漏洞是必须封堵的。中、低风险漏洞中有一部分是必须封堵的。还有一部分中、低风险漏洞,由于其封堵的代价可能远高于不封堵所造成的损失,因而可以进行选择性封堵。典型网站漏洞的分类及相应的封堵要求如下表所示: 风险等级 高风险 中、低风险 中、低风险 漏洞名称 SQL注入漏洞 跨站漏洞 XPATH注入漏洞 默认测试用例文件 管理后台登陆入口 应用程序错误 备份文件 存在电子邮件地址 无效链接 Web应用默认目录 必须封堵 选择封堵 典型网站漏洞影响及解决方案 SQL注入漏洞 漏洞影响: 本漏洞属于Web应用安全中的常见漏洞,属于OWASP TOP 10 (2007)中的注入类漏洞。 很多WEB应用中都存在SQL注入漏洞。SQL注入是一种攻击者利用代码缺陷进行攻击的方式,可在任何能够影响数据库查询的应用程序参数中利用。例如url本身的参数、post数据或cookie值。 正常的SQL注入攻击很大程度上取决于攻击者使用从错误消息所获得信息。但是,即使没有显示错误消息应用程序仍可能受SQL注入的影响。 总体上讲,SQL注入是对web应用而不是对web服务器或操作系统本身的攻击。正如其名称所示,SQL注入是对查询添加非预期SQL命令从而以数据库管理员或开发人员非预期的方式操控数据库的行为。如果成功的话,就可以获得、修改、注入或删除有漏洞web应用所使用数据库服务器的数据。在某些环境下,可利用SQL注入完全控制系统。 解决方案: 防护建议包括部署分层安全措施(包括在接受用户输入时使用参数化的查询)、确保应用程序仅使用预期的数据、加固数据库服务器防止不恰当的访问数据。 建议使用以下措施防范SQL注入漏洞: 对于开发 ======== 使用以下建议编写不受SQL注入攻击影响的web应用。 参数化查询:SQL注入源于攻击者控制查询数据以修改查询逻辑,因此防范SQL注入攻击的最佳方式就是将查询的逻辑与其数据分隔,这可以防止执行从用户输入所注入的命令。这种方式的缺陷是可能对性能产生影响(但影响很小),且必须以这种方式构建站点上的每个查询才能完全有效。只要无意中绕过了一个查询,就足以导致应用受SQL注入的影响。以下代码显示的是可以进行SQL注入的SQL语句示例。 sSql = SELECT LocationName FROM Locations ; sSql = sSql + WHERE LocationID = + Request[LocationID]; oCmd.CommandText = sSql; 下面的例子使用了参数化的查询,不受SQL注入攻击的影响。 sSql = SELECT * FROM Locations ; sSql = sSql + WHERE LocationID = @LocationID; oCmd.CommandText = sSql; oCmd.Parameters.Add(@LocationID, Request[LocationID]); 、应用程序没有包含用户输入向服务器发送SQL语句,而是使用-@LocationID-参数替代该输入,这样用户输入就无法成为SQL执行的命令。这种方式可以有效的拒绝攻击者所注入的任何输入,尽管仍会生成错误,但仅为数据类型转换错误,而不是黑客可以利用的错误。 以下代码示例显示从HTTP查询字符串中获得产品ID并使用到SQL查询中。请注意传送给SqlCommand的包含有SELECT的字符串仅仅是个静态字符串,不是从输入中截取的。此外还请注意使用SqlParameter对象传送输入参数的方式,该对象的名称(@pid)匹配SQL查询中所使用的名称。 C#示例: string connString = WebConfigurationManager.ConnectionStrings[myConn].ConnectionString; using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); SqlCommand cmd = ne

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档