- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 注入的防护问题,有很多答案提供的是对输入字符串
您可能关注的文档
- boysname..doc
- BO与OracleBIEE产品对比v1..doc
- Book5--8词汇整理合..doc
- BO报表技术入门..doc
- BO公司BI产品介绍..doc
- BP-2A型母差(双母线)部检..doc
- BP2832-M8832替代型号..doc
- BP2833-M8833替代..doc
- BP2836-M8836替代..docx
- BPEC材料钢号对照..doc
- 功能设计_MM_MM015_报废单_20080109_v2.0.doc
- 功能设计_MM_MM021_采购订单批导入程序_20080108_v1.0.doc
- 功能设计_MM_MM020_出库单_20071205_v2.1.doc
- 功能设计_MM_MM019_入库单_20071205_v2.1.doc
- 功能设计_MM_MM018_领料单_20080114_v2.0.doc
- 功能设计_MM_MM016_ERP与招投标系统接口_20080327_v1.2.doc
- 功能设计_MM_MM014_退库单_20080109_v1.0.doc
- 功能设计_MM_MM013_物料盘点清单_20080114_v2.0.doc
- 中考数学知识点10 一元一次不等式(组)(2).pdf
- 七年级数学优质课公开课教案教学设计期中综合检测.pdf
文档评论(0)