fortify安全整改解决方案代码安全示例课件_第1页
fortify安全整改解决方案代码安全示例课件_第2页
fortify安全整改解决方案代码安全示例课件_第3页
fortify安全整改解决方案代码安全示例课件_第4页
fortify安全整改解决方案代码安全示例课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Fortify安全整改解决方 案 1fortify安全整改解决方案代码安全示例 常见安全漏洞 SQL Injection(SQL注入) Cross-Site Scripting (跨站脚本攻击) Log Forging(日志攻击) Unrelease Resource(资源泄漏) 2fortify安全整改解决方案代码安全示例 SQL Injection (SQL 注入攻 击) 定义 在输入的字符串之中注入恶意的SQL指令,这些注入的指令会 被数据库误认为是正常的SQL指令进行执行,使系统遭到破坏。 Reference 3fortify安全整改解决方案代码安全示例 注入原理(1) SELECT

2、* FROM items WHERE owner = #userName# AND itemname = $itemName$ 使用SQL关键字(AND/OR/DELETE/UPDATE) itemName = name or 1=1 itemName = name ;Delete from items 4fortify安全整改解决方案代码安全示例 注入原理(2) 使用特殊符号(% , -) itemName = %name%; itemName = name;delete from items ;- 5fortify安全整改解决方案代码安全示例 Ibatis下的SQL注入 对于Ibaits参

3、数引用可以使用#和$两种写法。 (1)#写法会采用预编译方式,将转义交给了数据库,会自动在参数 的外面加上引号,不会出现注入问题。 (2)$写法相当于拼接字符串,会出现注入问题。 6fortify安全整改解决方案代码安全示例 解决方案(1) 对于所有请求进行入参的过滤 Reference: 7fortify安全整改解决方案代码安全示例 解决方案(2) 避免使用 $ 字符拼接变量的情况 select * from t_user where name like %$name$%; (1)Oracle select * from t_user where name like %|#name #|%

4、; (2)Mysql select * from t_user where name like concat(%,#name #,%) ; (3)Mssql select * from t_user where name like %+#name #+% 8fortify安全整改解决方案代码安全示例 常见安全漏洞 SQL Injection(SQL注入) Cross-Site Scripting (跨站脚本攻击) Log Forging(日志攻击) Unrelease Resource(资源未释放) 9fortify安全整改解决方案代码安全示例 Cross-Site Scripting (跨站

5、脚本攻击) 攻击者向动态Web页面里插入恶意HTML代码,当用户 浏览页面时,嵌入的恶意代码被执行从而达到攻击的目的。 10fortify安全整改解决方案代码安全示例 XSS分类(1) Reflected XSS(反射式XSS) 程序从 HTTP 请求中直接读取数据,并在 HTTP 响应中返 回数据。当攻击者诱使用户为易受攻击的 Web 应用程序提供危险内容, 而这些危险内容随后会反馈给用户并在 Web 浏览器中执行,就会发生反 射式 XSS 。 示例代码 Employee ID: 11fortify安全整改解决方案代码安全示例 XSS分类(2) Persisted XSS(持久式CSS) 程

6、序将危险数据储存在一个数据库或其他可信赖的数 据存储器中。这些危险数据随后会被回写到应用程序中,并包含在 动态内容中。 示例代码: JAVA代码:String name = dao.queryName(id); JSP代码:Employee Name: 12fortify安全整改解决方案代码安全示例 解决方案(1) 入参和出参校验 (1)“” 可以引入一个标签或者结束一个标签。 (2) try int value = Integer.parseInt(val); catch (NumberFormatException) (Failed to parse val = + val

7、); 正常日志: INFO:Failed to parse val=twenty-one 恶意日志: 若value输入: twenty- one%0a%0a%0aINFO:+User+logged+out%3d%3dbadguy 输出: INFO:Failed to parse val=twenty-one INFO:User logged out=badguy 18fortify安全整改解决方案代码安全示例 解决方案 (1)只输出必要的日志,功能上线前删除大多数调试日志 (2)过滤非法字符 19fortify安全整改解决方案代码安全示例 常见安全漏洞 SQL Injection(SQL注入)

8、 Cross-Site Scripting (跨站脚本攻击) Log Forging(日志攻击) Unrelease Resource(资源泄漏) 20fortify安全整改解决方案代码安全示例 Unrelease Resource (资源泄漏) 程序可能无法成功释放某一项已申请的系统资源。 如果攻击者能够故意触发资源泄漏,就有可能通过耗尽资源池的方 式发起 DOS(Denial Of Service)攻击。 21fortify安全整改解决方案代码安全示例 资源泄漏分类 Unrelease Stream(流资源未释放) Unrelease DB Connection(数据库连接未释放) 22f

9、ortify安全整改解决方案代码安全示例 Unrelease Stream (流资源未释放) try Reader reader = new (); BufferedReader br = new BufferedReader(reader) catch(Exception e) finally if(br != null) br.close();/如果抛异常,则br资源无法释放 23fortify安全整改解决方案代码安全示例 Unrelease DB Connection (数据库连接未释放) SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(queryString); cmd.Connection = conn; conn.Open(); SqlDataReader rdr = cmd.ExecuteReader(); HarvestResults(rdr); conn.Connection.Close(); 如果在执行 SQL 或者处理查询结果时发生异常,SqlConnection 对象不会被关 闭。如果这种情况频繁出现,数据库将用完所有可用的指针,就不能再执行任何 SQL 查询。 24fortify安全整改解决方案代码安全示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论