常见漏洞以及修复方法
更新时间:2024-03-28 19:43:01 阅读量: 综合文库 文档下载
常见漏洞以及修复方法
文:政府事业本部第一事业部 劳动人事开发部 刘世涛
1
目录
(一) (二)
前言 ......................................................................................3 常见漏洞及原理分析 ...................................................................3 1. sql脚本注入 .......................................................................3 2. 跨站点脚本编制 ...................................................................3 3. 不安全的HTTP方法及登录验证相关 ...........................................4 4. 跨站点请求伪造 ...................................................................4 5. 危险性较低的开发及配置问题 ...................................................4 系统防御原理 ............................................................................5 1. sql脚本注入 .......................................................................5 2. 跨站点脚本编制 ...................................................................5 3. 不安全的HTTP方法及登录验证相关 ...........................................6 4. 跨站点请求伪造 ...................................................................6 5. 危险性较低的开发及配置问题 ...................................................6 结语 ......................................................................................7
(三)
(四)
2
(一) 前言
在做互联网的项目中,由于网络用户数量大、环境更加复杂,对系统安全的考虑要更加慎重和全面。我在部门中参与了多个互联网项目,以此为基础,并结合IBM AppScan安全工具,介绍一下我们遇到的几个安全方面的问题及其原理和解决方案。
我们的项目使用的技术主要包括:spring、spring MVC、freemarker、hibernate。 本文主要站在软件系统的构建者和开发者的角度出发,类似网络环境、服务器配置等,可以参考其他资料。 (二)
常见漏洞及原理分析
1. sql脚本注入
后台执行sql语句时,使用字符串拼接的方式,并且该字符串是使用浏览器提交的数据时。攻击者将提交的数据就行修改,可以达到执行希望的sql的目的。该攻击比较危险,可能会造成数据破坏和数据盗取的后果。
例如:用户提交username和password两个字段,系统后台判断语句为
String sql = “select * from user where name=’”+username+”’ and password=’”+password+”’”; 后台通过判断查询结果是否为空,来决定用户的账号和密码是否正确。 如果用户将username的值写为 admin‘ or 1 or ‘,并且存在账号名称为admin的管理员用户,则可以直接以admin登录成功。
以上例子只是很简单的一种状况,如果某些功能处理不好,有可能会造成大量数据被盗取的严重后果。
2.
跨站点脚本编制
攻击者在浏览器向服务端提交的数据中,加入危险的内容,如js脚本等。如果服务器端没有响应的防御措施,则会被注入跨站脚本。典型的攻击分为两类:
持久型:例如攻击者在某博客内留言,该留言内容中嵌有一段获取用户账号cookie的JS脚本。该博客被某个登录用户访问时,脚本会在用户未知的情况下运行,就会被盗取账号等个人信息。
非持久型:攻击者在查询的请求内,使用URL参数的方式添加html语法内容和非法js脚本,并且将该URL发送给登录用户。登陆用户点击连接之后,脚本会在用户未知的情况下运行,就有可能被盗取账号等个人信息。
3
3. 不安全的HTTP方法及登录验证相关
针对现有的常见漏洞进行解释:
1. 已解密的登录请求、启用了不安全的 HTTP 方法:如果没有使用https协议,攻
击者可以在网络层面对数据进行拦截。针对登录、注册等功能,账户等主要信息会被法拦截。
2. 不充分帐户封锁:攻击者可能会使用穷举法对密码进行暴力破解。
3. 会话标识未更新:用户在未登录和登录后的sessionid没有进行更新,则攻击者
仿造一个带有自定义的jsessionid参数的URL发送给被攻击者,通常为登录页面,如果被攻击者点击链接之后,进行了登录操作,jsessionid未更新,并且攻击者拥有这个jsessionid,则可以使用这个sessionid作为攻击者自身的信息,进入系统后,就拥有了被攻击者的权限。
4. 跨站点请求伪造
在某个非法网站的页面内嵌入允许跨站点的标签,例如js、img标签。标签的src属性为某个操作的请求,例如转账、授权等等。当用户在登录被攻击网站之后,如果访问该非法页面,则会自动向被攻击网站发送一条请求,此时网站认为该请求是用户本人的操作,攻击成功。
5.
危险性较低的开发及配置问题
1. Bash Shell 历史记录文件检索
服务器配置
2. Robots.txt 文件 Web 站点结构暴露 3. 会话 cookie 中缺少 HttpOnly 属性
会话cookie没有HttpOnly属性,则在浏览器端可以使用js等手段进行修改 4. 自动填写未对密码字段禁用的 HTML 属性
自动记录密码功能
5. HTML 注释敏感信息泄露
注释信息中含有某些关键字,如password等等 6. 发现电子邮件地址模式
注释或代码中存在邮件格式的信息,可能会有信息泄露 7. 发现内部 IP 泄露模式
返回信息中,带有内部IP信息,可能会有信息泄露 8. 客户端(JavaScript)Cookie 引用
浏览器端运行的js文件对cookie进行了引用,可能会被攻击者利用。
4
(三) 系统防御原理
1. sql脚本注入
要求所有的人员在开发过程中,杜绝食用字符串直接拼接sql语句的方式,而使用预编译或命名参数的方式。
例如:
String sql = “select * from a where b=’”+name+”’”; //name为浏览器请求的参数 1. 预编译的sql在jdbc中的体现为preparedstatement。
查询语句应为:select * from a where b=? ,时候使用preparedstatement.setXXX的方法进行变量设置。
2. 命名参数在常用的orm框架中都有对应的方法,以spring的jdbctemplate为例:
String sql =” select * from a where b=:name”; jdbctemplate.query(sql, new Object[]{name}, …)
3. 通常使用hibernate等orm框架,使用其对应的java bean进行增删改查操作都
是安全的。
现在处理漏洞方法:使用过滤器来过滤非法字符,解决该漏洞!但是在程序开发中,请不要使用直接拼接sql语句! 过滤器代码:
2.
跨站点脚本编制
该漏洞的核心原因是未针对用户提交的数据中含有html语义的内容进行替换,从而造成用户提交的数据可以被客户端执行造成的。
解决办法就是针对用户提交的数据进行处理,将其中的特殊字符替换为用于显示的html实体。例如:小于号(<)替换为<等等。如果你使用用于页面展示的模板引擎,那恭喜你。这些模板引擎通常有自带的处理方法,可以方便的将特殊子图替换掉。如果没有,那就需要自己进行替换,建议使用正则表达式,方便效率。 下面以我们项目为例,介绍我的处理方法。
1. 数据库层面:添加系统级配置管理模块,对系统库表和字段进行配置。针对需
要进行替换的数据库表和字段,在管理模块内配置为需要替换。系统会在该字段被修改和保存时,通过hibernate拦截器。对数据内的html语义字符替换为html实体,如小于号(<)、大于号(>)等。该操作可以防御危险性较高的持久型跨站点脚本攻击。
2. 页面显示层:添加系统级配置管理模块,对用户请求页面进行配置。针对需要
进行替换的页面,将页面动态显示内容(freemarker变量内容,例如动态显示的用户名称、展示数据等)进行替换,对数据内的html语义字符替换为html实体。该操作可以防御所有的跨站点脚本攻击。例如:攻击者使用伪造请求数据的方法,提交了非法的js脚本,该请求数据在freemarker渲染页面时,作为语句开
5
发的
正在阅读:
常见漏洞以及修复方法03-28
CT床板项目可行性研究报告06-10
山西省农业厅技术服务专家指导组(9组)01-28
美国为什么要打南斯拉夫01-15
四川高考改革方案出炉-四川高考新方案03-08
内存卡 U盘 修复手册05-22
土壤样品采集与处理实验报告05-08
图像去噪方法07-08
第三章 水化学与水污染01-15
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 漏洞
- 修复
- 以及
- 常见
- 方法
- 两年高考一年模拟2016版高考物理(10)万有引力与航天(含答案)
- 新概念21-30短语总结
- 大学医学有机化学考试重点
- 交大计算机第6次作业
- 伊藤忠贸易物流用语
- ETL选型策略及参考:Kettle与HaoheDI对比
- 六安市城北小学南校校园学生伤害事故预防和处理工作的办法
- 吉林省2017年基金从业资格:债券的久期和凸度模拟试题
- 10kV高压线防护方案
- 2014年福建专升本英语模拟试卷及答案(更多资料请登陆博迪网下载
- 光模块故障导致LTE上行速率不达标案例 - 图文
- 最新2019年初中数学100题练习试卷 中考模拟试卷959157
- 最新2018-2019年人教版小学五年级下册数学期中试卷及答案
- 白盒测试
- 浅析我国农村经济发展过程中存在的问题及对策
- 杨梦苏教授1984年毕业于厦门大学,1988年获得加拿大
- 高数08下21
- 2011新课标高考物理一轮复习精编解析版复习资料:第三章 牛顿运
- 基坑支护专项施工方案(报审版)全解
- 关于设立爱众售电公司的可行性研究报告