新浪安全开发流程培训课程.ppt

上传人:仙人指路1688 文档编号:2215000 上传时间:2023-02-01 格式:PPT 页数:83 大小:2.46MB
返回 下载 相关 举报
新浪安全开发流程培训课程.ppt_第1页
第1页 / 共83页
新浪安全开发流程培训课程.ppt_第2页
第2页 / 共83页
新浪安全开发流程培训课程.ppt_第3页
第3页 / 共83页
新浪安全开发流程培训课程.ppt_第4页
第4页 / 共83页
新浪安全开发流程培训课程.ppt_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《新浪安全开发流程培训课程.ppt》由会员分享,可在线阅读,更多相关《新浪安全开发流程培训课程.ppt(83页珍藏版)》请在三一办公上搜索。

1、,新浪安全开发流程介绍,新浪信息安全团队V1.0,课程内容,安全问题趋势,http:/www.cert.org/stats/,安全漏洞的危害,影响产品性能和稳定性影响公司声誉SONY影响客户对产品的信心CSDN影响整个公司的生存和发展CloudNineDiginotar,安全问题的起因,以功能为主,忽略安全的重要性,缺乏系统的安全开发流程,安全问题的起因,开发者缺乏安全开发经验,安全漏洞解决,选择后期补救的原因过去,在软件开发阶段,安全不是重要的考虑因素。软件开发人员没有足够的精力在早期解决缺少安全审计人员人们习惯于接受有缺陷的软件,然后应用安全补丁进行修补。,各个阶段统计数据,各个阶段问题的

2、统计数据,安全的开发流程,最少的安全漏洞,编码,设计,需求,准备,测试,配置跟踪,安全开发流程,最少的安全漏洞,编码,设计,需求,准备,测试,配置跟踪,任务启动之前的准备,为每一个项目要指定安全方面的负责人安全策略的执行和跟踪安全问题的咨询安全相关的培训安全问题统计和决策,任务启动之前的准备,安全培训安全开发流程安全设计方法安全编码规范安全测试方法安全测试用例的编写如何检测培训效果针对安全培训的考试,安全的开发流程,编码,设计,需求,准备,测试,配置跟踪,最少的安全漏洞,安全需求的来源,安全需求的可能来源系统或者应用的功能需求国家,国际或者组织内部的标准和指南被加工数据的敏感度级别公司相关的安

3、全策略误用、滥用用例,http:/,安全需求来源,是否需要符合某个行业标准 HIPAA是否需要符合某些法律法规(进/出口限制)可用性99.99%单点故障灾难恢复灾难恢复计划热备份 冷备份 暖备份,安全需求目标和方法,机密性 防止泄露秘密,完整性 防止修改数据,可用性 灾难后可以迅速恢复,认证 用户是可信的,授权 权限的分配,追踪 重要操作防抵赖,安全目标,安全需求实施方法,安全需求实施方法,安全需求实施方法,如何保证检查列表得到执行,需求审查机制参加审查的人员,需求分析人员,安全人员,项目负责人,设计人员,测试者,需求分析文档,安全的开发流程,编码,设计,需求,准备,测试,配置跟踪,最少的安全

4、漏洞,设计-安全设计原则I,安全设计原则最小特权赋予最小特权,并且只允许使用所需要的最少时间。创建一个新用户时,默认的权限应该是最小的。故障安全化确保如果系统出现故障,那么它将以安全方式失败,例如,自动关闭无单点故障.提供深度防御保护最薄弱环节分隔基本思想是如果我们将系统分成尽可能多的独立单元,那么我们可以将对系统可能造成损害的量降到最低。总体调节每次访问一个对象时,都要检查访问授权,特别是和安全很关键的对象。,设计-安全设计原则II,安全设计原则简单易懂默认拒绝保护隐私用户通常认为隐私是安全性问题。您不应该做任何可能泄露用户隐私的事情.公开设计,不要假设隐藏秘密就是安全,设计的安全目标,安全

5、目标可靠性在所有的情况下,程序可以预期地正确地运行,包括受攻击的情况。可信赖性只有很少的缺陷或者弱点可以被利用,且没有恶意的逻辑。健壮性能抵抗是大多数已知的攻击和尽可能多的新的攻击,在受到不可抵抗的攻击时,能够容忍攻击并将损失降到最低,受到其他少数的不可抵抗和容忍的攻击时,可以快速恢复。,和第三方集成注意事项,和第三方集成注意事项认证第三方要明确第三方的权限要明确请求的具体内容格式,安全设计的实施方法,认证与授权 Check list 选项,安全设计的实施方法,信息保密和完整性 Check list 选项,常见问题和预防I-XSS,讨论如何传输保存用户的密码?防范对象:网络传输中间人知道代码逻

6、辑的内部员工数据管理员黑客,安全设计的实施方法,编程安全相关 Check list 选项,安全设计的实施方法,编程安全相关 Check list 选项输入验证-第一道防线,安全设计的实施方法,日志、错误处理、审计 Check list 选项,安全设计的实施方法,环境和配置 Check list 选项,变更控制,变更控制变更控制,要有安全方面的人员跟踪与审查。需要评估变更是否影响现在的威胁和防御措施。,如何保证检查列表得到执行,设计审查机制参加审查的人员,测试者,需求分析人员,安全人员,开发人员,设计人员,设计文档,安全的开发流程,编码,设计,需求,准备,测试,配置跟踪,最少的安全漏洞,安全代码

7、规范,安全代码规范的重要性可以使开发认识到安全编码的重要性可以规避一些缺陷,提高产品的质量提高代码的可读性,有助于代码审查有助于维护代码,常见问题和预防I-XSS,跨站点脚本攻击(XSS Injection)反射式存储式基于Dom危害页面内的内容可以被发往任何地方,包括Cookie使得其他类型的攻击更加容易,CSRF,Session Attack可以拦截整个站点的行为,常见问题和预防I-XSS,常见的预防方式输入验证(客户端和服务端)Httponly有些浏览器不支持,有些Web 服务器也不支持,例如:weblogicsecure只对HTTPS有效输出编码OWASP ESAPI性能复合编码,常见

8、问题和预防I-XSS,通用解决方案-输出编码哪里需要编码不仅仅是页面HTML任何包含用户数据的地方HTTP头和主体Cookie,HTTP头里的重定向URL编码方式URL 编码参数中特殊的字符%20Html编码Javascript编码“”复合编码从内到外,从后到前,按照浏览器语法解析的逆序进行编码,常见问题和预防I-XSS,思考题$userid=$_POSTuser;if()$_SESSIONuser=$userid;/login successfully$datausername=$_SESSIONuser;alert(“The user you type can not be found!”

9、);”,常见问题和预防I-XSS,典型攻击字符串XSS”img upload onerror onerror=alert(XSS)alt=.jpgUTF-7 XSS攻击向量:+ADw-script+AD4-http:/ha.ckers.org/xss.html,常见问题和预防I-XSS,跨站点脚本攻击(XSS)的总结最有效的解决方案:输出编码,要提供统一的易用的解决方案。,常见问题和预防II-SQL注入,SQL 注入 对于输入检查不充分或者处理不当,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。SQL 注入的危害泄露数据库信息泄露秘密数据信息破坏,删除以及修改数据,常见问题和预防I

10、I-SQL注入,SQL注入代码示例$userName=$_POSTusername“;$password=$_POSTpassword“;$query=SELECT count(*)FROM users WHERE username=+$userName+AND password=+$password;if(intval($mysql-getVar($query)0)/登录成功else/登录失败.,登录用户名:or 1=1-,SELECT count(*)FROM users WHERE username=or 1=1-and password=,常见问题和预防III-文件上传下载,文件上传下

11、载问题主要原因服务器端路径的权限没有控制好文件名校验不严格文件的类型控制不严格文件的大小控制不严格,常见问题和预防III-文件上传下载,文件上传下载问题类型控制只在客户端控制可以修改,将.php文件上传修改文件名例如:修改 test.txt./././././test.txt并发控制问题一个用户同时登录多个,同时上传多个文件,导致超过最大空间的限制。,常见问题和预防III-文件上传下载,.jpg 文件问题,常见问题和预防III-文件上传下载,常见问题和预防III-文件上传下载,文件上传问题的解决办法使用正确的函数使用白名单,黑名单白名单 zip,txt黑名单 jsp,php,pl,exe,ba

12、t,asp等禁止上传目录有执行脚本的权限不要在url中显示上传文件的相对路径不仅仅要在客户端进行输入校验,在后台服务器端也要进行输入校验上传不仅要有类型限制,也要有大小限制,常见问题和预防III-文件上传下载,路径遍历的危害使攻击者突破应用程序的安全控制,泄露服务器的敏感数据,包括配置文件,日志,源代码,使得攻击者可以更容易地获得更高权限,而且利用起来也相对简单。http:/www.wooyun.org/bugs/wooyun-2010-04732/auth/012c7667246e005a707e7baa6d00f0c9,常见问题和预防III-文件上传下载,http:/www.某网站.com

13、/?w=n&c=/./././././././././././etc/passwd%00.html&a=dismiss,常见问题和预防III-文件上传下载,路径遍历其他常见的攻击方式URL编码绕过downfile.jsp?filename=%66%61%6E%2E%70%64%66目录限定绕过”“可以直接跳转到硬盘目录下 downfile.jsp?filename=/./boot 绕过文件后缀过滤/./././././././././././etc/passwd%00.html,常见问题和预防III-文件上传下载,路径遍历不好的预防措施黑名单将./从文件命中删除/./如何预防路径遍历对文件后缀

14、进行白名单控制,对包含了恶意的符号或者空字节进行拒绝。使用绝对路径+参数来控制访问目录,使其即使是越权或者跨越目录也是在指定的目录下。使用ID来代替文件名要检查对文件的访问权限,常见问题和预防IV-认证和授权,认证和授权越权访问泄露用户数据2011年5月,Citigroup揭露黑客通过修改URL中的账号信息,已经窃取几十万个客户银行账号信息。,常见问题和预防IV-认证和授权,http:/,常见问题和预防IV-认证和授权,解决方案使用一个统一的解决方案,并将解决方案应用到框架中ESAPI Access control featureESAPI Authenticator默认是拒绝访问。,常见问题

15、和预防IV-认证和授权,方案简介对于每一个URL都要认证和授权。具体的认证授权方法:划分角色博主可以添加,删除,看,评论,删除评论博主的朋友可以看一般文章,以及分享给朋友的文章,可以评论一般访问者可以看一般文章,可以评论将URL的访问控制和角色结合,可配置化,容易扩展,C/C+常见问题及预防-缓冲区溢出,C/C+常见问题及预防-缓冲区溢出,栈溢出控制返回地址堆溢出覆盖堆结构,2次free,覆盖堆中的指针整数溢出由于整数溢出导致的堆溢出例如JPEG 溢出漏洞,C/C+常见问题及预防-缓冲区溢出,ebp+4,C/C+常见问题及预防-缓冲区溢出,缓冲区溢出分类基于堆栈的缓冲区溢出覆盖函数返回地址覆盖

16、ebp内容(单字节溢出)基于堆或者BSS的缓冲区溢出覆盖重要的内容,例如:函数指针,文件名等。覆盖动态分配内存之间的管理数据结构格式字符串溢出,C/C+常见问题及预防-缓冲区溢出,缓冲区溢出产生的原因开发者没有进行边界检查开发者缺乏安全编程经验认为分配的内存足够,如使用固定长度数组。使用不安全的数据拷贝函数strcpy,strcat,gets,sprintf开发者没有进行正确的边界检查错误的使用一些“安全”拷贝函数也可能会导致缓冲区溢出如:memcpy(dest,src,strlen(src),C/C+常见问题及预防-缓冲区溢出,阻止缓冲区溢出的方法不使用不安全的数据拷贝函数在往缓冲区中填充数

17、据时必须进行边界检查。尽量动态分配内存存储数据,不要使用固定大小的缓冲区释放内存之后,将指针置为NULL,以防二次释放,C/C+常见问题及预防-缓冲区溢出,如何通过系统或者编译器预防CPU/OSAMD Ehanced Virus Protection/Intel Excute Disable Bit(EDB)提供数据执行保护(NX)编译器MS/GS/NXCOMPACT/DYNAMICBASE LinuxFORTIFY_SOURCE gcc flagStackGuardStackShield ProPolice,在返回地址前面增加字符串中止符号或者随机数据,检测是否被修改,创建一个特别的堆栈用来

18、储存函数返回地址的一份拷贝。它在受保护的函数的开头和结尾分别增加一段代码,开头处的代码用来将函数返回地址拷贝到一个特殊的表中,而结尾处的代码用来将返回地址从表中拷贝回堆栈。,C/C+常见问题及预防-缓冲区溢出,其他预防方法使用有边界检查的函数代替无边界检查的函数 strcpystrncpy使用安全的开发库,如:C+STL C Safe C Library使用缓冲区安全的语言,如Java、C#,C/C+常见问题及预防-函数返回值,解决方法在设计函数时,要确定是返回一个值还是抛exception严格检查函数返回值在出错的情况下,要记录出错的原因。不能记录用户的敏感数据和个人信息。如果确实不需要判断

19、返回值则使用void(void)funcA();,编程-代码审查,代码审查审查的代码所有的对外的接口的代码用管理员运行的代码曾经出过问题的代码处理秘密数据的代码,如密码,加密Key代码审查Check ListC/C+Java代码审查工具Code Collaborator,代码扫描工具的应用,静态代码扫描Parasoft JTest Klocwork CoveritySelf-developed Tool,代码扫描工具的应用,动态分析工具WebInspect Valgrind,安全编程TOP10,验证输入验证所有的从不信任的数据源来的输入,包括命令行,网络接口,环境变量,用户控制的文件。注意编译

20、器告警编译时,用最高的告警级别,并且清除所有的告警。框架和设计要符合安全策略保持简单默认拒绝坚持最小权限原则净化发送到其他系统的数据在将数据发送给复杂的子系统时,将数据无害化处理。深度预防一层防御是不足够的,多一层防御可以使一个安全缺陷不可利用或者减轻被利用的结果。使用有效地质量保证技术Fuzz Testing,渗透测试,源代码审计,独立的安全审查,外部审查等。采用一个安全的编码标准不使用过时的函数,安全的开发流程,最少的安全漏洞,编码,设计,需求,准备,测试,配置跟踪,测试,“The designers and the specifications might outline a secur

21、e design,the developers might be diligent and write secure code,but its the testing process that determines whether the product is secure in the real world.”Michael Howard and David LeBlanc Writing Secure Code,Second Edition,安全测试,安全测试计划和用例,安全测试与功能测试的不同,安全测试计划和用例,测试计划和测试用例审查参加审查人员,设计人员,安全人员,开发人员,测试人员

22、,设计文档,安全测试和测试方法,基于安全风险的测试主要关注攻击.源于风险分析威胁建模攻击树攻击模式安全缺陷Checklist将安全测试融于各个阶段单元测试输入验证集成测试错误处理系统测试压力测试渗透测试,安全测试和测试方法,渗透测试自动化渗透测试工具 AppScan,WebInspect一般渗透测试工具 ZAP/Paros/Fiddler/OWASP WebScarab Fuzz TestPeach手工测试有些逻辑是自动化测试覆盖不了的,安全缺陷分析,量化分析代码缺陷/代码行数缺陷类型分析,安全的开发流程,最少的安全漏洞,编码,设计,需求,准备,测试,配置跟踪,配置管理的重要性 配置管理的主意事项禁用一些不必要的服务 尽量不以管理员用户启动程序.部署之前,要禁用跟踪和调试,配置管理的重要性,跟踪业界最新的动态,新问题会不断出现 MD5,SHA1已不再安全 Padding Oracle AttackTLS/SSL BEAST attackSSL DoS,指定安全人员,总结,培训,安全需求,识别威胁,安全编码规范,安全代码静态分析,安全测试测试工具培训,渗透测试,安全注意事项,安全需求审查,安全设计审查,安全代码审查,跟踪最新安全动态,安全人员,THE END,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号