WEB安全系统编程技术要求规范

上传人:鲁** 文档编号:498626965 上传时间:2023-06-27 格式:DOC 页数:25 大小:1.07MB
返回 下载 相关 举报
WEB安全系统编程技术要求规范_第1页
第1页 / 共25页
WEB安全系统编程技术要求规范_第2页
第2页 / 共25页
WEB安全系统编程技术要求规范_第3页
第3页 / 共25页
WEB安全系统编程技术要求规范_第4页
第4页 / 共25页
WEB安全系统编程技术要求规范_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《WEB安全系统编程技术要求规范》由会员分享,可在线阅读,更多相关《WEB安全系统编程技术要求规范(25页珍藏版)》请在金锄头文库上搜索。

1、word1. X围本规X从WEB应用开发安全管理要求出发,给出了WEB编码安全的具体要求。本规X明确定义了JAVA应用开发中和WEB编码安全相关的技术细节。与JAVA编码安全相关的内容包括:跨站脚本攻击与解决方法、SQL注入与解决方法、恶意文件执行与解决方法、不安全的直接对象引用与解决方法、跨站请求伪造与解决方法、信息泄露和错误处理不当与解决方法、残缺的认证和会话管理与解决方法、不安全的加密存储与解决方法、不安全的通信与解决方法、限制URL访问实效解决方法等。2. 1.规X概述Web应用程序为架构设计人员、开发人员、测试人员和运维运营人员提出一系列复杂的安全问题,最安全、最有能力抵御攻击的We

2、b应用程序是那些应用安全思想构建的应用程序。在设计初始阶段,应该使用可靠的体系结构和设计方法,同时要结合考虑程序部署以与企业的安全策略。如果不能做到这一点,将导致在现有根底结构上部署应用程序时,要不可防止地危与安全性。本规X提供一系列安全的体系结构和设计指南,并按照常见的应用程序漏洞类别进展组织。这些指南是Web应用程序安全的重要方面,并且是经常发生错误的领域。2.实现目标使用本规X可以实现:1. 确定安全Web应用程序的重要体系结构和设计问题。2. 设计时考虑重要部署问题。3. 制定能增强Web应用程序输入验证的策略。4. 设计安全的身份验证和会话管理机制。5. 选择适当的授权模型。6. 实

3、现有效的某某管理方法,并保护用户会话。7. 对隐私认可并防止篡改,和对身份验证信息进展加密。8. 防止参数操作。9. 安全漏洞checklist。10. 设计审核和记录策略。3.安全编码原如此1. 程序只实现你指定的功能。2. 永不要信任用户输入,对用户输入数据做有效性检查。3. 必须考虑意外情况并进展处理。4. 不要试图在发现错误之后继续执行。5. 尽可能使用安全函数进展编程。6. 小心、认真、细致地编程。4.安全背景知识本规X主要提供设计应用程序时应该遵循的一些指南和原如此。为充分理解本规X内容,请:了解应用程序将会受到的威胁,以确保通过程序设计解决这些问题。了解需要考虑的威胁,在程序设计

4、阶段应该考虑到这些威胁。在应用程序易受攻击的重要环节应用系统的方法。将重点放在程序部署、输入验证、身份验证和授权、加密与数据敏感度、配置、会话、异常管理以与适当的审核和记录策略上,以确保应用程序具有健壮性。安全编程OWASP TOP10ANDESAPI5.1OWASP TOP10 与ESAPIOWASP(开放Web应用安全项目-OpenWebApplicationSecurityProject)是一个开放社群、非营利性组织,目前全球有82个分会近万名会员,其主要目是研议协助解决Web软体安全之准如此、工具与技术,长期致力于协助政府或企业并改善网页应用程式与网页服务的安全性。OWASPTOP10

5、是10个最关键的Web应用安全问题清单。这份是每隔数年更新最近2013年。Top 10项目的目标是通过找出企业组织所面临的最严重的风险来􏰀高人们对应用程序安全的关注度。Top 10项目被众多标准、书籍、工具和相关组织引用,包括 MITRE、PCI DSS、DISA、 FTC等等。此版本的 OWASP Top 10标记了该项目这十年来对于应用程序安全风险重要性认知的推广。OWASP Top 10最初于2003 年发布,并于2004年和2007年相继做了少许的修改更新。2010年版做了修改以对风险进展排序,而不仅仅仅限于流行程度。本次发布的2013年版也沿用了该方法。上都是那些通

6、常很简单的,危险的安全问题。这里是一个以在OWASP十大项目的。.owasp.org/index.php/Category:OWASP_Top_Ten_Project其实简单一点来说,ESAPI就是为编写出更加安全的代码设计出来的一些API,方便使用者调用,从而方便的编写安全的代码。它本身是开源的,同时提供JAVA版本和.NET版本。代码下载地址:code.google./p/owasp-esapi-java/如下图显示提供的API与OWASP列出的10个安全问题的盖关系:如下图显示结合ESAPI设计你的程序:如下图简单呈现ESAPI如何运作:跨站脚本XSS定义当应用程序收到含有不可信的数据,

7、在没有进展适当的验证和转义的情况下,就将它发送给一个网页浏览器,这就会产生跨站脚本攻击(简称XSS)。XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害、或者将用户转向至恶意。危害攻击者能在受害者浏览器中执行脚本以劫持用户会话、迫害、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器等等。种类有三种著名跨站漏洞:1存储式;2反射式;3基于DOM。反射式跨站脚本通过测试或代码分析很容易找到。解决方法5.2.4.1.验证输入验证输入很简单-检查每个输入的有效性。这可能意味着很多东西,但在典型的和简单的情况下,这意味着检查输入类型和数据的长度。例如,如果你是从一个文本框承受一个准的

8、邮政编码,你会知道,唯一有效的类型是一个数字0-9,而长度应该是6,不能多也不能少。并非所有的案件都如此简单,但很多是相似的。如下图显示验证输入的架构。这里的关键是,一切都进展验证,所有的输入,这并不来自于应用程序包括用户输入,请求头,Cookie,数据库数据.。u 实例getValidInput(java.lang.Stringcontext,java.lang.Stringinput,java.lang.Stringtype,intmaxLength,booleanallowNull,ValidationErrorListerrors)isValidInput(java.lang.Stri

9、ngcontext,java.lang.Stringinput,java.lang.Stringtype,intmaxLength,booleanallowNull)StringvalidatedFirstName=ESAPI.validator().getValidInput(FirstName,myForm.getFirstName(),FirstNameRegex,255,false,errorList);booleanisValidFirstName=ESAPI.validator().isValidInput(FirstName,myForm.getFirstName(),First

10、NameRegex,255,false);5.2.4.2.编码输出对验证输入的另一面就是编码输出。编码输出,是用来确保字符被视为数据,而不是作为HTML元字符被浏览器解析。这些技术定义一些特殊的转义字符。没有正确转义的数据它仍然会在浏览器中正确解析。编码输出只是让浏览器知道数据是不是要被解析,达到攻击无法实现的目的。需要编码的局部:1、HTML实体2、HTML属性3、Javascript4、CSS5、URL如下图像显示编码输出的架构。u 实例1HTML实体编码/performinginputvalidationStringcleanment=ESAPI.validator().getValid

11、Input(ment,request.getParameter(ment),mentRegex,300,false,errorList);/checktheerrorListhere./performingoutputencodingfortheHTMLcontextStringsafeOutput=ESAPI.encoder().encodeForHTML(cleanment);u 实例2URL编码/performinginputvalidationStringcleanUserName=ESAPI.validator().getValidInput(userName,request.get

12、Parameter(userName),userNameRegex,50,false,errorList);/checktheerrorListhere./performingoutputencodingfortheurlcontextStringsafeOutput=/admin/findUser.do?name=+ESAPI.encoder().encodeForURL(cleanUserName);注入定义注入攻击漏洞,例如SQL、OS以与LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一局部,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或

13、者在未被恰当授权时访问数据。简单来说,注入往往是应用程序缺少对输入进展安全性检查所引起的,攻击者把一些包含指令的数据发送给解释器,解释器会把收到的数据转换成指令执行,注入漏洞十分普遍,通常能在SQL查询、LDAP查询、Xpath查询、OS命令、程序参数等中出现。危害注入能导致数据丢失或数据破坏、缺乏可审计性或是拒绝服务。注入漏洞有时甚至能导致完全接收主机。种类SQL注入、XPATH注入、LDAP注入、OS命令注入等。解决方法注入实例StringsqlString=SELECT*FROMusersWHEREfullname=+form.getFullName()+ANDpassword=+for

14、m.getPassword()+;正常:username=tony,password=123456SELECT*FROMusersWHEREusername=tonyANDpassword=123456攻击:username=tony,password=OR1=1SELECT*FROMusersWHEREusername=tonyANDpassword=OR1=15.3.4.2.参数化查询预处理使用PreparedStatement()绑定变量下面的代码示例使用一个PreparedStatement,Java的一个参数化查询的执行情况,执行一样的数据库查询。Stringcustname=req

15、uest.getParameter(customerName);/ThisshouldREALLYbevalidatedtoo/performinputvalidationtodetectattacksStringquery=SELECTaccount_balanceFROMuser_dataWHEREuser_name=?;PreparedStatementpstmt=connection.prepareStatement(query);pstmt.setString(1,custname);ResultSetresults=pstmt.executeQuery();5.3.4.3.使用存储过程Stringcustname=request.getParameter(customerName);/ThisshouldREALLYbevalidatedtryCallableStatementcs=connection.prepareCall(callsp_getAccountBalance(?);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号