电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

WEB十大安全隐患

  • 资源ID:110789492       资源大小:285.99KB        全文页数:34页
  • 资源格式: DOCX        下载积分:18金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要18金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

WEB十大安全隐患

WEB十大安全隐患OWASP TOP 10-2010开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。其目的是协助个人、企业和机构来发现和使用可信赖软件。http:/www.owasp.orgOWASP发布了最新的Web应用脆弱性的top 10,这是继2007年OWASP对TOP10进行修订后进行的又一次更改,该版本暂定为OWASP TOP 10- 2010。在新版本的OWASP TOP10中主要由以下变化:1. Top10的命名发生了变化。原先的Top10全称为“The top 10 most critical web application security vulnerabilities”,即“Web应用的十大关键脆弱性”,现在Top10的全称为“The top 10 most critical web application security risks”,即“Web应用的十大关键风险”2. OWASP Top 10的风险评估方法 此次Top 10的评估是依据OWASP的风险评估方法来对OWASP TOP10排序的。3. 替换了2个风险 此次Top 10与2007年的Top 10相比,在内容上去掉了“Malicious File Execution”(恶意文件执行)和“Information leakage and improper error handling”(信息泄露及不恰当的错误处理),增加了“Security misconfiguration”(错误安全配置)和“Unvalidated redirects and forwards”(未验证的重定向和传递)。 OWASP TOP10 2007 OWASP TOP10 2010 A2-注入 A1-注入 A1-跨站脚本(XSS) A2-跨站脚本(XSS) A7-错误的认证和会话管理 A3-错误的认证和会话管理 A4-不正确的直接对象引用 A4-不正确的直接对象引用 A5-伪造跨站请求(CSRF) A5-伪造跨站请求(CSRF)  A6-安全性误配置 A10-限制远程访问失败 A7-限制远程访问失败  A8-未验证的重定向和传递 A8-不安全的加密存储 A9-不安全的加密存储 A9-不足的传输层保护 A10-不足的传输层保护 A3-恶意文件执行  A6-不安全的通讯 OWASP风险评估方法OWASP所选取的10大风险是依据OWASP的风险评估方法,我们从标准的风险模型开始,即风险=可能性*后果,下面我们以以下步骤来说明某个风险的严重程度:第一步:识别风险识别风险作为评估的第一步,我们必须找到与这个风险相关的威胁、相应的攻击方法、隐含在里面的脆弱性以及最终可能造成的后果,当然可能存在多种攻击方法和多种后果,在评估时我们往往会采用最坏选择,这样就能更客观的反应该风险的最终评级;第二步:考虑影响可能性的因素通常,我们不可能很精准的说出某个风险的可能性数值,所以我们一般用高、中、低来表示,而且影响某个风险的可能性的因素有很多,对于每个因素我们用0到9的数值来表示。类别因素分项分值威胁技能要求无需技能1需要一些技术3高级的计算机用户4需要网络和编程技术6安全渗透技术9成功攻击后攻击者的益处很低或无益1可能会有回报4高回报9所需资源或机会需要很大资源或高权限访问0需要特定的访问权限和特定的资源4需要一些访问权限和资源7无需权限或资源9所需的攻击者的角色开发者2系统管理员2内部用户4合作伙伴5认证用户6匿名Internet用户9脆弱性发现该弱点的难易度技术上不可行1困难3容易7可用自动化工具发现9利用该弱点的难易度只是理论上的1困难3容易5可用自动化工具实现9该弱点的流行度不为人知1隐藏4明显6公众皆知9入侵被察觉的可能性应用程序主动检测1记录日志并审核3记录日志未审核8无日志9第三步:考虑影响后果的因素在考虑攻击后果的时候,我们会考虑两种后果,一种是应用的“技术后果”,它所使用的数据,提供的功能等等,另一种就是它的“商业后果”,显然后者则更为重要,但往往后者难以估量,所以我们需要尽可能从技术上去考虑,进而来估计后者的数据。类别因素分项分值技术后果保密性损失很少的非敏感的数据泄漏2很少的敏感数据泄漏6大量的非敏感数据泄漏6大量的敏感数据泄漏9A1-注入注入往往是应用程序缺少对输入进行安全性检查所引起的,攻击者把一些包含指令的数据发送给解释器,解释器会把收到的数据转换成指令执行。常见的注入包括SQL注入,OS Shell,LDAP,Xpath,Hibernate等等,而其中SQL注入尤为常见。这种攻击所造成的后果往往很大,一般整个数据库的信息都能被读取或篡改,通过SQL注入,攻击者甚至能够获得更多的包括管理员的权限。防范SQL注入编程篇SQL注入往往是在程序员编写包含用户输入的动态数据库查询时产生的,但其实防范SQL注入的方法非常简单。程序员只要a)不再写动态查询,或b)防止用户输入包含能够破坏查询逻辑的恶意SQL语句,就能够防范SQL注入。在这篇文章中,我们将会说明一些非常简单的防止SQL注入的方法。我们用以下Java代码作为示例:String query =SELECT account_balance FROM user_data WHERE user_name =+ request.getParameter(customerName); try Statement statement =connection.createStatement( );ResultSet results =Statement.executeQuery(query);在以上代码中,我们可以看到并未对变量customerName做验证,customerName的值可以直接附在query语句的后面传送到数据库执行,则攻击者可以将任意的sql语句注入。防范方法1:参数化查询参数化查询是所有开发人员在做数据库查询时首先需要学习的,参数化查询迫使所有开发者首先要定义好所有的SQL代码,然后再将每个参数逐个传入,这种编码风格就能够让数据库辨明代码和数据。参数化查询能够确保攻击者无法改变查询的内容,在下面修正过的例子中,如果攻击者输入了UsrID是“or 1 =1”,参数化查询会去查找一个完全满足名字为or 1 = 1的用户。对于不同编程语言,有一些不同的建议:Java EE使用带绑定变量的PreparedStatement();.Net使用带绑定变量的诸如SqlCommand()或OleDbCommand()的参数化查询;PHP使用带强类型的参数化查询PDO(使用bindParam());Hibernate使用带绑定变量的createQuery()。Java示例:String custname = request.getParameter(customerName);String query =SELECT account_balance FROM user_data WHERE user_name= ?; PreparedStatement pstmt = connection.prepareStatement(query);Pstmt.setString1,custname();ResultSet results = pstmt.executeQuery();C# .Net示例: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.Text);OleDbDataReader reader = command.ExecuteReader(); catch (OleDbException se)/error handling防范方法二:存储过程存储过程和参数化查询的作用是一样的,唯一的不同在于存储过程是预先定义并存放在数据库中,从而被应用程序调用的。Java存储过程示例:String custname = request.getParameter(customerName);try       CallableStatement cs = connection.prepareCall(call sp_getAccountBalance(?);      cs.setString(1,custname);      Result results = cs.executeQuery();catch(SQLException se)/error handlingVB .Net存储过程示例: TryDim command As SqlCommand = new SqlCommand(sp_getAccountBalance,connection) command.CommandType = CommandType.StoredProcedure command.Parameters.Add(new SqlParameter(CustomerName,CustomerName.Text) Dim reader As SqlDataReader = command.ExecuteReader() Catch se As SqlException error handlingEnd Try防范方法三:对所有用户输入进行转义我们知道每个DBMS都有一个字符转义机制来告知DBMS输入的是数据而不是代码,如果我们将所有用户的输入都进行转义,那么DBMS就不会混淆数据和代码,也就不会出现SQL注入了。当然,如果要采用这种方法,那么你就需要对所使用的数据库转义机制,也可以使用现存的诸如OWASP ESAPI的escaping routines。ESAPI目前是基于MySQL和Oracle的转义机制的,使用起来也很方便。一个Oracle的ESAPI的使用示例如下:ESAPI.encoder().encodeForSQL(new OracleCodec(),queryparam);那么,假设你有一个要访问Oracle数据库的动态查询代码如下:String query =SELECT user_id FROM user_data WHERE user_name = +

注意事项

本文(WEB十大安全隐患)为本站会员(xins****2008)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.