BS程序代码与安全与基本攻击..doc

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

BS程序代码与安全与基本攻击/防御模式 BearOcean 2008-06-02 1.??? 引言 1.1.???? 文档说明: 1.2.???? 文档组织方式: 2.??? 正文 2.1.???? SQL注入 2.1.1.????? 攻击模式: 2.1.2.????? 防御办法: 2.2.???? 脚本注入 2.2.1.????? 攻击模式 2.2.2.????? 防御方式 2.3.???? 跨站攻击 2.3.1.????? 攻击模式 2.3.2.????? 防御方式 2.4.???? shell 上传 2.4.1.????? 攻击模式 2.4.2.????? 防御方式 2.5.???? 爆破 2.5.1.????? 攻击模式 2.5.2.????? 防御方式 3.??? 结语 ? ? ? 1.???????? 引言 1.1.??????? 文档说明: 该文档主要阐述在BS程序中,安全性方面的注意事项。常见的主要攻击模式,以及为了防御这些不同的攻击手段,作为技术人员建议注意的编码事项。 该文档包含的内容主要是个人对于Internet 安全性问题的理解。以及对这些问题进行规避的方法整理,难免有误,也欢迎大家进行指正和补充。 另注: 该文档出现的编码均为伪代码。 1.2.??????? 文档组织方式: 该文档主要按照攻击模式进行分类整理,每个攻击模式的小专题分2部分内容: (1) 攻击模式详述 (2) 防御方式与建议 对于攻击模式详述部分,尽可能多的举出案例来进行说明,已方便理解。而防御方式,实际上通常只有在对攻击模式理解的前提下,才可能真正确保防御的有效。 2.???????? 正文 2.1.??????? SQL注入 2.1.1.?????? 攻击模式: SQL 注入的成因主要是因为向DB提供的SQL 是用字符串拼装的方式生成的。 最经常遭受SQL注入的页面通常是管理员/用户登陆点。不论是asp 或是jsp,如果不正确的编码,都会出现这个漏洞。 下面以一个实例来阐述SQL注入的成因。 假设我们有一个JSP 页面login.jsp,用于搜集管理员输入的用户名和密码。用户点击按钮,将会把收集到的用户名与密码提交到指定的控制组件(Struts:Action,或者Servlet).在该组件中调用chekLogin(String userName, String passWord) 进行登陆验证,以从页面收集到的用户名和密码信息拼装出SQL 字符串,供DAO 下层使用,以从数据库中的管理员记录表中读取数据,如果从表中找到匹配的记录,则表示验证成功,我们将返回相应得管理员实体类。否则返回Null 表示登陆验证失败。 这是一个非常简单的逻辑模块,如下图所示: 这个逻辑产生注入漏洞的关键在于checkAdminLogin方法。因为在该方法中,我们以这种方式进行编码: public Admin checkAdminLogin(String userName, String password){ //拼装SQL字符串 String strSQL =”SELECT * FROM TD_ADMIN AS A WHERE A.USERNAME=’”+userName +”’ AND A.PASSWORD=’”+password+”’”; //后续通过DAO 提交该SQL到数据库获得查询结果,省略 这个生成SQL 的方式,记得刚接触数据库编程的时候,有很多书籍的范例代码也是这样书写的,咋一看没有什么问题,但是由于没有对可能的输入作一个全面的考虑,所以便产生了注入漏洞。如果有人试图在这里进行恶意攻击,那么他可以在登陆名输入框中输入 123 (其实其他的任意值也可) 而在密码输入框中输入 ‘ OR ‘1’=’1 那么由于我们的SQL是靠拼出来的,所以最终提交给数据库的将是: SELECT * FROM TD_ADMIN AS A WHERE A.USERNAME=’123’ AND A.PASSWORD=’’ OR ‘1’=’1’ 很显然,这句SQL 由于后面被加上了永真条件,登陆是一定成功的。那么不论登陆者是否是管理员,输入 ‘ OR ‘1’=’1 ,他都将能够登陆系统。 更有甚者,我可以在输入框中输入数据库的SQL注释符,然后填写我想让数据库执行的操作例如DROP SOMETABLE 一类的。所以注入漏洞的危害实际是非常大的。 SQL 注入漏洞的根本原因是,由于我们编码时的不小心,导致用户可以通过输入来改变要执行的逻辑,甚至输入新的逻辑。但是,越是严重和显而易见的代码安全问题,实际要修补却也是越容易的。 2.1.2.?????? 防御办法: A: 加上验证(或者字符过滤) 在网上有哪些信誉好的足球投注网站关于对SQL 注入的防护问题,有很多答案提供的是对输入字符串

文档评论(0)

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

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

1亿VIP精品文档

相关文档