资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,OWASP,安全编码,1,.,OWASP,OWASP,O,pen,:,开放的、多人维护的,W,eb,A,pplication,S,ecurity,P,roject:Top 10/Webgoat/Webscarab etc,.,https,:/www.owasp.org/,2,.,OWASP-Top10,3,.,OWASP Top10,风险等级计算方法,4,.,A1-,Injection,原理:数据被当作代码执行,方式:,SQL,注入、命令注入等,示例:,or 1=1,代码:,String query=SELECT*FROM accounts WHERE custID,=+request.getParameter(id)+;,sensitive/cgi-bin/userData.pl?doc=user1.txt%3B/bin/ls,代码:,Runtime.exec(“cat user1.txt;/bin/ls”);,危害:窃取数据、控制服务器,5,.,安全编码,安全,API,禁止动态拼接、禁止使用系统,shell,ESAPI:,https:/www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API,参数化查询:,https:/www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet,Java-Standard,String custname=request.getParameter(customerName);,String query=SELECT account_balance FROM user_data WHERE user_name=?;,PreparedStatement pstmt=connection.prepareStatement(query);,pstmt.setString(1,custname);,ResultSet results=pstmt.executeQuery();,PHP-PDO,$stmt=$dbh-prepare(INSERT INTO REGISTRY(name,value)VALUES(:name,:value);,$stmt-bindParam(:name,$name);,$stmt-bindParam(:value,$value);,.NET/C#,String query=SELECT account_balance FROM user_data WHERE user_name=?;,try,OleDbCommand command=new OleDbCommand(query,connection);command.Parameters.Add(new OleDbParameter(customerName,CustomerName Name.Text);,OleDbDataReader reader=command.ExecuteReader();/,catch(OleDbException se),/error handling,6,.,安全过滤,/,编码,白名单过滤,https:/static.javadoc.io/org.owasp.esapi/esapi/2.1.0.1/org/owasp/esapi/Validator.html,getValidCreditCard(),getValidDirectoryPath(),黑名单过滤,元字符,Windows,:,()!.”%/:+,Linux,:,()$#!.”%/:+,Authentication and Session Management,原理:与身份认证和会话管理相关的应用程序功能没考虑安全性,导致攻击者破坏密码、密钥等去冒充其他用户的身份,方式:,密码没有加密或弱加密(存储,/,传输),ID,可猜测,ID,没有超时限制,示例:,void doPost(ServletRequest request,ServletResponse response),try,User user=ESAPI.authenticator().login(request,response);/continue with authenticated user,catch(AuthenticationException e),/handle failed authentication(its already been logged),9,.,A3-XSS,原理:,HTML,注入,方式:反射,/,持久,/DOM,(,Document Object Model,),示例:,document.locakon=www.a/,.NEVER PUT UNTRUSTED DATA HERE.directly in CSS,.ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE.,https:/www.owasp.org/index.php/OWASP_Java_Encoder_Project#tab=Main,转义内容,&,、,、,”,、,、,/,参考:,https:/www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet,11,.,A4-,Broken Access Control,原理:,在页面中暴露了一个对象的直接引用,比如文件、目录、密钥。,仅仅在前台做了功能限制,没有在后台限制和校验。,示例,fileSet=new HashSet();,fileSet.addAll(.);/add direct references(e.g.File objects),AccessReferenceMap map=new AccessReferenceMap(fileSet);,/store the map somewhere safe-like the session!,String indRef=map.getIndirectReference(file1);,String href=+indRef);,.,/if the indirect reference doesnt exist,its likely an attack,/getDirectReference throws an AccessControlException/you should handle as appropriate String indref=request.getParameter(file);,File file=(File)map.getDirectReference(indref);,13,.,A5-,Security Misconfiguration,示例:默认账户、密码,目录可访问,.,方式:,OS,DB,Web,服务器,框架攻击,危害:信息泄漏、源码泄漏、,DoS,14,.,安全编码,自动化部署避免手工错误,详细清晰的部署和更新流程,多做漏洞扫描和审计,15,.,A6-,Sensitive Data Exposure,原理:不安全的传输或存储,危害:信息泄漏,示例:,密码泄漏事件,16,.,安全编码,数据加密(内外兼顾),及时清除过期数据,密码加密防止硬件破解,BCRYPT,、,PBKDF2,、,SCRYPT,敏感数据禁用表单自动填充,autocomplete=off,17,.,A7-,Insufficient Attack Protection,原理:被动防护,示例:,暴力破解、恶意扫描,危害:攻击者不断尝试后成功入侵,18,.,安全编码,攻击检测,无效字符、频繁请求,攻击响应,阻断请求、,IP,、账户,虚拟补丁,WAF,19,.,A8-CSRF,原理:,示例:,浏览器,站点,A,(安全),站点,B,(不安全),1,、用户,C,登陆安全的站点,A,2,、通过验证,站点,A,为用户,C,生成,cookie,5,、由于用户,C,未退出站点,A,,站点,B,上的恶意请求被执行,3,、用户,C,在未退出站点,A,的情况下访问不安全的站点,B,4,、站点,B,中的恶意请求让用户,C,访问站点,B,20,.,安全编码,校验,Referer,隐藏令牌,Cookie,设置,Set-Cookie:foo=1;SameSite=Strict,21,.,A9-,Using Components with Known Vulnerabilities,原理:使用了含有漏洞的,web,组件,示例:,CVE-2013-2251 Apache Struts 2.0-2.3,任意命令执行漏洞,host/struts2-blank/example/X.action?action:%25(new+java.lang.ProcessBuilder(new+java.lang.String,command,goes,here).start(),22,.,安全编码,记录所有第三方组件和版本,订阅第三方组件安全邮件列表,时刻关注最新的安全信息,禁用不使用的功能,安全封装组件,23,.,A10-,Underprotected APIs,原理:,API,不是用户可见,所以忽视了安全防护,示例:,REST API/SOAP,危害:注入、越权、信息泄露,24,.,安全编码,安全通信(,SSL,),安全认证方案,解析器安全,安全访问控制方案,注入防护,25,.,OWASP Enterprise Security API(ESAPI),www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API,包含的安全控件,:,身份认证、访问控制、输入验证、输出编码、转义、密码、错误处理和日志、通信安全、安全配置,实现的语言版本:,Java,、,.net,、,ASP,、,PHP,、,Python,26,.,Thanks,27,.,
展开阅读全文