Web开发中常见的安全缺陷及解决办法
- 格式:doc
- 大小:40.00 KB
- 文档页数:7
2. jQuery 跨站脚本漏洞2.1 问题描述jQuery是继prototype之后又一个优秀的Javascrīpt框架。
jQuery 1.6.3之前版本中存在跨站脚本漏洞。
当使用location.hash选择元素时,通过特制的标签,远程攻击者利用该漏洞注入任意web脚本或HTML。
2.2 整改方法目前厂商已经发布了升级补丁以修复此安全问题,补丁获取:.ubuntu./usn/USN-1722-1/2.3 整改案例升级jQuery版本。
3. 跨站脚本编制3.1 问题描述:跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个。
攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的容等请求。
风险等级:高风险围:任何存在输入/输出方法(包括GET与POST)的页面皆可能存在恶意符号输入缺陷,主要影响应用包括留言板、在线通讯信息、文章发布页面等。
3.2 整改建议:对用户输入的参数执行严格检测:1、对产生漏洞模块的传入参数进行有效性检测。
int类型的只允许0-9的整型数字;string等字符类型的只允许(1-9,a-z,A-Z)的英文字母;2、当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式;3、对穿入参数进行危险字符过滤,禁止('、"、+、%、&、<>、()、;、,.等)特殊字符的传入。
3.3 案例:加固例(一):/*将login.jsp中[String u =request.getParameter("u");]替换为如下容:*/String u = request.getParameter("u");u = u.replace ('<','_');u = u.replace ('>','_');u = u.replace('"','_');u = u.replace('\'','_');u = u.replace ('%','_');u = u.replace(';','_');u = u.replace('(','_');u = u.replace(')','_');u = u.replace('&','_');u = u.replace('+','_');加固例(二):/*更积极的方式是利用正则表达式只允许输入指定的字符:*//*在[String u = request.getParameter("u");]后代入以下isValidInput函数作辨别*/public boolean isValidInput(Stringstr){if(str.matches("[a-z0-9]+"))return true;else return false;}4. URL重定向钓鱼4.1 3.1问题描述:通过构建URL,攻击者可以使用户重定向到任意URL,利用这个漏洞可以诱使用户访问某个页面,挂马、密码记录、下载任意文件等,常被用来钓鱼。
网站漏洞检测归类和解决方案doc文档可能在WAP端扫瞄体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
一、典型网站漏洞分类依照风险等级,网站漏洞通常可分为高风险、中风险和低风险三种。
其中高风险漏洞是必须封堵的。
中、低风险漏洞中有一部分是必须封堵的。
还有一部分中、低风险漏洞,由于其封堵的代价可能远高于不封堵所造成的缺失,因而能够进行选择性封堵。
能够采取工具亿思平台进行其网站的漏洞扫描,具体地址为: :// iiscan 典型网站漏洞的分类及相应的封堵要求如下表所示:风险等级高风险 1、 SQL 注入漏洞 2、跨站漏洞中、低风险 1、默认测试用例文件 2、治理后台登陆入口中、低风险 1、存在电子邮件地址漏洞名称3、 XPATH 注入漏 3、应用程序错误引起的 2、无效链接洞信息泄露4、备份文件造成的源代码泄漏 3、 Web 应用默认目录封堵要求必须封堵选择封堵1二、典型网站漏洞阻碍及解决方案1、 SQL 注入漏洞漏洞阻碍:本漏洞属于 Web 应用安全中的常见漏洞,属于 OWASP TOP 10 (2007)中的注入类漏洞。
专门多 WEB 应用中都存在 SQL 注入漏洞。
SQL 注入是一种攻击者利用代码缺陷进行攻击的方式,可在任何能够阻碍数据库查询的应用程序参数中利用。
例如 url 本身的参数、post 数据或 cookie 值。
正常的 SQL 注入攻击专门大程度上取决于攻击者使用从错误消息所获得信息。
然而,即使没有显示错误消息应用程序仍可能受SQL 注入的阻碍。
总体上讲,SQL 注入是对 web 应用而不是对 web 服务器或操作系统本身的攻击。
正如其名称所示,SQL 注入是对查询添加非预期 SQL 命令从而以数据库治理员或开发人员非预期的方式操控数据库的行为。
假如成功的话,就能够获得、修改、注入或删除有漏洞 web 应用所使用数据库服务器的数据。
在某些环境下,可利用 SQL 注入完全操纵系统。
网站常见漏洞以及解决办法远端HTTP服务器类型和版本信息泄漏1、ServerTokens 指令语法- ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full默认值- ServerTokens Full这个指令控制了服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息。
ServerTokens Prod[uctOnly] 服务器会发送(比如):Server: ApacheServerTokens Major 服务器会发送(比如):Server: Apache/2ServerTokens Minor 服务器会发送(比如):Server: Apache/2.0ServerTokens Min[imal] 服务器会发送(比如):Server: Apache/2.0.41ServerTokens OS 服务器会发送(比如):Server: Apache/2.0.41 (Unix) ServerTokens Full (或未指定) 服务器会发送(比如):Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2此设置将作用于整个服务器,而且不能用在虚拟主机的配置段中。
2.0.44版本以后,这个指令还控制着ServerSignature指令的显示内容。
2、ServerSignature 指令说明: 配置服务器生成页面的页脚语法: ServerSignature On|Off|Email默认值: ServerSignature OffServerSignature 指令允许您配置服务器端生成文档的页脚(错误信息、mod_proxy的ftp目录列表、mod_info的输出)。
您启用这个页脚的原因主要在于处于一个代理服务器链中的时候,用户基本无法辨识出究竟是链中的哪个服务器真正产生了返回的错误信息。
Web应用中常见39种不同的安全漏洞漏洞分析及检查方法1.1SQL注入漏洞风险等级:高危漏洞描述:SQL注入漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验,即没有进行有效地特殊字符过滤,导致网站服务器存在安全风险,这就是SQL Injection,即SQL注入漏洞。
漏洞危害:1) 机密数据被窃取;2) 核心业务数据被篡改;3) 网页被篡改;4) 数据库所在服务器被攻击从而变为傀儡主机,导致局域网(内网)被入侵。
修复建议:1)在网页代码中对用户输入的数据进行严格过滤;(代码层)2)部署Web应用防火墙;(设备层)3)对数据库操作进行监控。
(数据库层)代码层最佳防御sql漏洞方案:采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。
原因:采用了PreparedStatement,就会将sql语句:"select id, no from user where id=?" 预先编译好,也就是SQL引擎会预先进行语法分析,产生语法树,生成执行计划,也就是说,后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的语法结构了,因为语法分析已经完成了,而语法分析主要是分析sql命令,比如select ,from ,where ,and, or ,order by 等等。
所以即使你后面输入了这些sql命令,也不会被当成sql命令来执行了,因为这些sql命令的执行,必须先的通过语法分析,生成执行计划,既然语法分析已经完成,已经预编译过了,那么后面输入的参数,是绝对不可能作为sql命令来执行的,只会被当做字符串字面值参数,所以sql语句预编译可以防御sql注入。
其他防御方式:正则过滤1.2目录遍历漏洞风险等级:中危漏洞描述:通过该漏洞可以获取系统文件及服务器的配置文件。
利用服务器API、文件标准权限进行攻击。
漏洞危害:黑客可获得服务器上的文件目录结构,从而下载敏感文件。
很多用户都碰到过这样一些难堪的事,因为服务器的安全漏洞问题,导致其中数据的丢失、权限被非法取得。
其实随着工作中的研究和探讨,就会逐渐发现这些安全隐患的存在原因以及解决办法。
网络服务器主要是指那些存放网站数据的WEB服务器、DA TA服务器、DNS 服务器和MAIL服务器而言。
WEB服务器的问题已经见的不少了,在这里就主要谈谈DATA 服务器、DNS服务器和MAIL服务器的问题。
DATA服务器安全问题先来看看DATA服务器。
它主要是存放数据库的服务器。
以SQL数据库为例,从安全角度考虑,SQL服务器与BACKOFFICE组件中的所有程序一样,都是以Windows NT Server 为基础,利用了Windows NT Server 自身拥有的安全性能。
而且,当你将SQL服务器与Internet 相连时,为保证你数据的安全性和完整性,有些事情你需要特别考虑。
1、支持SQL服务器的Internet Database Connector(简称IDC)的安全性在通常情况下,数据库的开发者在使用IDC来处理SQL服务器数据时,就应该考虑对你的数据库实施必要的保护措施。
有哪些是必须要做到的呢!根据我的一些经验,以下几点是需要考虑的:1) 、使用NTFS分区。
2) 、给予用户执行日常任务所必需的最低等级的访问许可权。
3)、强制执行口令和登录策略。
4) 、TCP/IP过滤。
5) 、防火墙及代理服务器。
通过以上几步措施,SQL服务器已经具备初级的安全防范的功能。
但是这些是远远不够的,因为高级的网络入侵者往往能够绕过这些防御。
那么就需要进一步提高服务器的安全性能。
用户必须得到访问.IDC和.HTX文件的许可权才能处理数据,如果赋予匿名访问权,那么IUSR_计算机为匿名访问设定的账户必须拥有访问这些文件的许可权。
2、IIS本身的安全性问题这个话题相信很多朋友看了都会感到很熟悉。
通过使用 SQL Web Assistant 也可以多少地保证你的 Microsoft Exchange 服务器、Internet信息服务器和SQL的安全。
软件安全漏洞的检测和防范技术方法第1章漏洞概述与分类 (4)1.1 漏洞的定义与危害 (4)1.1.1 漏洞的定义 (4)1.1.2 漏洞的危害 (4)1.2 漏洞的分类与分级 (5)1.2.1 漏洞的分类 (5)1.2.2 漏洞的分级 (5)第2章漏洞检测技术 (5)2.1 静态分析技术 (5)2.1.1 语法分析 (6)2.1.2 语义分析 (6)2.1.3 控制流和数据流分析 (6)2.2 动态分析技术 (6)2.2.1 运行时监控 (6)2.2.2 沙箱技术 (6)2.2.3 符号执行 (6)2.3 模糊测试技术 (6)2.3.1 字符串模糊测试 (7)2.3.2 数值模糊测试 (7)2.3.3 API模糊测试 (7)2.3.4 网络协议模糊测试 (7)第3章漏洞防范策略 (7)3.1 安全开发原则 (7)3.1.1 安全性设计 (7)3.1.2 最小权限原则 (7)3.1.3 安全更新与维护 (7)3.2 安全编码规范 (7)3.2.1 输入验证 (7)3.2.2 输出编码 (7)3.2.3 错误处理 (8)3.2.4 通信安全 (8)3.2.5 认证与授权 (8)3.3 安全测试与审查 (8)3.3.1 静态代码分析 (8)3.3.2 动态测试 (8)3.3.3 渗透测试 (8)3.3.4 安全审查 (8)3.3.5 安全培训与意识提升 (8)第4章系统安全漏洞检测与防范 (8)4.1 操作系统漏洞 (8)4.1.1 操作系统漏洞概述 (8)4.1.3 操作系统漏洞防范策略 (9)4.2 数据库系统漏洞 (9)4.2.1 数据库系统漏洞概述 (9)4.2.2 数据库系统漏洞检测技术 (9)4.2.3 数据库系统漏洞防范策略 (9)4.3 网络协议漏洞 (9)4.3.1 网络协议漏洞概述 (9)4.3.2 网络协议漏洞检测技术 (9)4.3.3 网络协议漏洞防范策略 (10)第5章应用软件漏洞检测与防范 (10)5.1 Web应用漏洞 (10)5.1.1 概述 (10)5.1.2 常见Web应用漏洞 (10)5.1.3 检测方法 (10)5.1.4 防范措施 (10)5.2 移动应用漏洞 (11)5.2.1 概述 (11)5.2.2 常见移动应用漏洞 (11)5.2.3 检测方法 (11)5.2.4 防范措施 (11)5.3 常用软件漏洞 (11)5.3.1 概述 (11)5.3.2 常见软件漏洞类型 (11)5.3.3 检测方法 (12)5.3.4 防范措施 (12)第6章编程语言漏洞检测与防范 (12)6.1 污点分析技术 (12)6.1.1 污点分析基本原理 (12)6.1.2 污点传播与数据流分析 (12)6.1.3 污点分析在编程语言漏洞检测中的应用 (12)6.1.4 污点分析技术的优化与改进 (12)6.2 代码审计技术 (12)6.2.1 静态代码审计 (12)6.2.1.1 代码规范性检查 (12)6.2.1.2 代码质量评估 (12)6.2.1.3 代码安全审计 (12)6.2.2 动态代码审计 (12)6.2.2.1 运行时监控技术 (12)6.2.2.2 模糊测试技术 (12)6.2.2.3 代码覆盖率分析 (12)6.2.3 交互式代码审计 (12)6.3 编程语言安全特性 (12)6.3.1 内存安全特性 (13)6.3.1.2 栈溢出保护 (13)6.3.1.3 内存边界检查 (13)6.3.2 类型安全特性 (13)6.3.2.1 强类型与弱类型 (13)6.3.2.2 类型检查机制 (13)6.3.2.3 类型转换安全性 (13)6.3.3 异常处理与错误安全 (13)6.3.3.1 异常处理机制 (13)6.3.3.2 错误处理策略 (13)6.3.3.3 错误安全编程 (13)6.3.4 安全编码规范与最佳实践 (13)6.3.4.1 安全编码原则 (13)6.3.4.2 编程语言安全指南 (13)6.3.4.3 安全编码工具与库支持 (13)第7章漏洞利用与防护技术 (13)7.1 漏洞利用方法 (13)7.1.1 漏洞扫描与识别 (13)7.1.2 漏洞分析与验证 (13)7.1.3 漏洞利用工具与框架 (13)7.2 漏洞防护技术 (14)7.2.1 硬件与系统防护 (14)7.2.2 软件安全防护 (14)7.2.3 网络防护技术 (14)7.3 防护策略优化 (14)7.3.1 安全策略制定与更新 (14)7.3.2 安全监控与响应 (14)7.3.3 安全培训与意识提升 (14)第8章漏洞管理平台与工具 (15)8.1 漏洞管理平台概述 (15)8.1.1 定义与功能 (15)8.1.2 架构与实现 (15)8.2 常用漏洞检测工具 (15)8.2.1 静态应用安全测试(SAST) (15)8.2.2 动态应用安全测试(DAST) (16)8.2.3 交互式应用安全测试(IAST) (16)8.3 漏洞库与漏洞信息共享 (16)8.3.1 漏洞库构建与维护 (16)8.3.2 漏洞信息共享 (16)第9章安全漏洞应急响应 (16)9.1 应急响应流程 (16)9.1.1 漏洞发觉 (16)9.1.2 漏洞报告 (16)9.1.3 漏洞评估 (17)9.1.5 应急预案启动 (17)9.2 漏洞修复与补丁管理 (17)9.2.1 漏洞修复 (17)9.2.2 补丁开发与测试 (17)9.2.3 补丁发布 (17)9.2.4 补丁跟踪与反馈 (17)9.3 安全事件处理与追踪 (17)9.3.1 事件分类与定级 (17)9.3.2 事件处理 (17)9.3.3 事件追踪 (17)9.3.4 事件报告与备案 (17)第10章未来发展趋势与展望 (18)10.1 漏洞检测技术的发展趋势 (18)10.1.1 人工智能技术在漏洞检测中的应用 (18)10.1.2 大数据驱动的漏洞检测 (18)10.1.3 云计算与漏洞检测技术的融合 (18)10.2 漏洞防范技术的创新 (18)10.2.1 防范策略的智能化 (18)10.2.2 防范技术的自动化与协同化 (18)10.2.3 防范策略的定制化与个性化 (18)10.3 软件安全漏洞研究的挑战与机遇 (18)10.3.1 开源软件安全漏洞的挑战 (18)10.3.2 移动互联网安全漏洞的挑战 (18)10.3.3 新兴技术带来的安全漏洞机遇 (19)第1章漏洞概述与分类1.1 漏洞的定义与危害1.1.1 漏洞的定义漏洞(Vulnerability)是指软件、系统或应用程序中的缺陷,攻击者可以利用这些缺陷非法访问、窃取、修改或破坏系统资源。
提纲:
一、不能盲目相信用户输入
二、五种常见的安全缺陷
2.1 篡改参数
2.2 篡改参数之二
2.3 信息泄漏
2.4 SQL注入式攻击
2.5 跨站脚本执行
三、使用自动安全测试工具
正文:
保证应用程序的安全应当从编写第一行代码的时候开始做起,原因很简单,随着应用规模的发展,修补安全漏洞所需的代价也随之快速增长。
根据IBM的系统科学协会(Systems Sciences Institute)的研究,如果等到软件部署之后再来修补缺陷,其代价相当于开发期间检测和消除缺陷的15倍。
为了用最小的代价保障应用程序的安全,在代码本身的安全性、抗御攻击的能力等方面,开发者应当担负更多的责任。
然而,要从开发的最初阶段保障程序的安全性,必须具有相应的技能和工具,而真正掌握这些技能和工具的开发者并不是很多。
虽然学写安全的代码是一个复杂的过程,最好在大学、内部培训会、行业会议上完成,但只要掌握了下面五种常见的应用安全缺陷以及推荐的修正方案,就能够领先一步,将不可或缺的安全因素融入到应用的出生之时。
一、不能盲目相信用户输入
在Web 应用开发中,开发者最大的失误往往是无条件地信任用户输入,假定用户(即使是恶意用户)总是受到浏览器的限制,总是通过浏览器和服务器交互,从而打开了攻击Web应用的大门。
实际上,黑客们攻击和操作Web网站的工具很多,根本不必局限于浏览器,从最低级的字符模式的原始界面(例如telnet),到CGI脚本扫描器、Web代理、Web应用扫描器,恶意用户可能采用的攻击模式和手段很多。
因此,只有严密地验证用户输入的合法性,才能有效地抵抗黑客的攻击。
应用程序可以用多种方法(甚至是验证范围重叠的方法)执行验证,例如,在认可用户输入之前执行验证,确保用户输入只包含合法的字符,而且所有输入域的内容长度都没有超过范围(以防范可能出现的缓冲区溢出攻击),在此基础上再执行其他验证,确保用户输入的数据不仅合法,而且合理。
必要时不仅可以采取强制性的长度限制策略,而且还可以对输入内容按照明确定义的特征集执行验证。
下面几点建议将帮助你正确验证用户输入数据:
⑴始终对所有的用户输入执行验证,且验证必须在一个可靠的平台上进行,应当在应用的多个层上进行。
⑵除了输入、输出功能必需的数据之外,不要允许其他任何内容。
⑶设立“信任代码基地”,允许数据进入信任环境之前执行彻底的验证。
⑷登录数据之前先检查数据类型。
⑸详尽地定义每一种数据格式,例如缓冲区长度、整数类型等。
⑹严格定义合法的用户请求,拒绝所有其他请求。
⑺测试数据是否满足合法的条件,而不是测试不合法的条件。
这是因为数据不合法的情况很多,难以详尽列举。
二、五种常见的安全缺陷
下面给出了五个例子,阐述如何按照上述建议增强应用程序的安全性。
这些例子示范了代码中可能出现的缺陷,以及它们带来的安全风险、如何改写最少的代码来有效地降低攻击风险。
2.1 篡改参数
◎使用域验证器
盲目信任用户输入是保障Web应用安全的第一敌人。
用户输入的主要来源是HTML表单中提交的参数,如果不能严格地验证这些参数的合法性,就有可能危及服务器的安全。
下面的C#代码查询后端SQL Server数据库,假设user和password变量的值直接取自用户输入:Trackback: /TrackBack.aspx?PostId=591732
从表面上看,这几行代码毫无问题,实际上却可能引来SQL注入式攻击。
攻击者只要在user输入域中输入“OR 1=1”,就可以顺利登录系统,或者只要在查询之后加上适当的调用,就可以执行任意Shell命令:
■ 风险分析
在编写这几行代码时,开发者无意之中作出了这样的假定:用户的输入内容只包含“正常的”数据——合乎人们通常习惯的用户名字、密码,但不会包含引号之类的特殊字符,这正是SQL注入式攻击能够得逞的根本原因。
黑客们可以借助一些具有特殊含义的字符改变查询的本意,进而调用任意函数或过程。
■ 解决方案
域验证器是一种让开发者对域的值实施限制的机制,例如,限制用户输入的域值必须匹配特定的表达式。
要防止上述攻击行为得逞,第一种办法是禁止引号之类的特殊字符输入,第二种办法更严格,即限定输入域的内容必须属于某个合法字符的集合,例如“[a-zA-Z0-9]*”。
2.2 篡改参数之二
◎避免验证操作的漏洞
然而,仅仅为每个输入域引入验证器还不能防范所有通过修改参数实施的攻击。
在执行数值范围检查之时,还要指定正确的数据类型。
也就是说,在使用的范围检查控件时,应当根据输入域要求的数据类型指定适当的Type属性,因为Type的默认值是String。
■ 风险分析
由于没有指定Type属性值,上面的代码将假定输入值的类型是String,因此RangeValidator验证器只能确保字符串由0-9之间的字符开始,“0abcd”也会被认可。
■ 解决方案
要确保输入值确实是整数,正确的办法是将Type属性指定为Integer:
2.3 信息泄漏
◎让隐藏域更加安全
在应用中,几乎所有HTML页面的__VIEWSTATE隐藏域中都可以找到有关应用的信息。
由于_VIEWSTATE是BASE 64编码的,所以常常被忽略,但黑客可以方便地解码BASE 64数据,用不着花什么力气就可以得到__VIEWSTATE提供的详细资料。
■ 风险分析
默认情况下,__VIEWSTATE数据将包含:
⑴来自页面控件的动态数据。
⑵开发者在ViewState中显式保存的数据。
⑶上述数据的密码签字。
■ 解决方案
设置EnableViewStatMAC="true",启用__VIEWSTATE数据加密功能。
然后,将machineKey验证类型设置成3DES,要求用Triple DES对称加密算法加密ViewState数据。
2.4 SQL注入式攻击
◎使用SQL参数API
正如前文“篡改参数”部分描述的,攻击者可以在输入域中插入特殊字符,改变SQL查询的本意,欺骗数据库服务器执行恶意的查询。
■ 风险分析
恶意查询有可能获取后端数据库保存的任何信息,例如客户信用卡号码的清单。
■ 解决方案
除了前面介绍的办法——用程序代码确保输入内容只包含有效字符,另一种更加健壮的办法是使用SQL参数API(例如提供的API),让编程环境的底层API(而不是程序员)来构造查询。
使用这些API时,开发者或者提供一个查询模板,或者提供一个存储过程,然后指定一系列的参数值,由底层API将参数值嵌入到查询模板,然后将构造出来的查询提交给服务器查询。
这种办法的好处是确保参数能够正确地嵌入,例如,系统将对引号进行转义处理,从根本上杜绝SQL注入式攻击的发生。
同时,在表单中引号仍是一个允许输入的有效字符,这也是使用底层API的一个优点。
按照这种思路修改前文“篡改参数”部分的例子,结果如下:
2.5 跨站脚本执行
◎对外发的数据进行编码
跨站脚本执行(Cross-site scripting)是指将恶意的用户输入嵌入到应答(HTML)页面。
例如,下面的A 页面虽然简单,却包含着一个重大的安全缺陷:
■ 风险分析
攻击者可以用javascript代码构造一个恶意的查询,点击链接时javascript就会运行。
举例来说,脚本可以通过下面的用户输入来嵌入:
■ 解决方案
在一个双层的安全体系中,对HTML页面中出现的外发用户数据执行输入验证和HTML编码,确保浏览器只把用户输入数据当成纯粹的文本,而不是其他具有特殊含义的内容,例如HTML代码、javascript脚本。
对于本例,只要加入一个HtmlEncode调用即可:
这样,应答HTML流将包含用户输入内容的HTML编码版本,也就是说,浏览器不会执行用户输入的jav ascript代码,因为根本不存在HTML的
标记,用户输入的“<”和“>”字符已经被替换成HTML编码版本,即“<”和“>”。
三、使用自动安全测试工具
由于客户需求不断变化,一些单位平均每三个月就要部署新的应用,同时由于人员流动,所以对开发者快速开发健壮的、高质量的代码寄予很高的期望。
虽然对所有开发者进行代码安全技术的培训是十分必要的,但不可否认,自动检测代码安全漏洞的工具也有助于快速开发安全的应用程序。
到目前为止,开发者常用的工具只能涵盖功能测试的特定方面,例如性能测试,BUG/故障点侦查。
人工检查代码有着许多与生俱来的局限,而且要求开发者具有丰富的代码安全经验,所以对于编写高质量的应用来说,面向应用程序安全及其在恶意环境下行为的工具也是十分关键的。
要迅速提高应用的质量和安全性,最有效的办法是给开发者提供一个自动测试应用的工具。
如果在单元测试期间,工具能够检测出应用的安全缺陷,并将修补建议嵌入到代码之中,开发者就能立即找出代码中存在的错误,不仅方便了现有错误的修改,而且也有助于避免将来再犯同样的错误,不断地提高代码抗御攻击的能力。
结束语:Web服务应用正在爆炸式增长,越来越多的应用被推出到防火墙之外,安全性脆弱的Web应用面临的风险也只会有增无减。
同时,为了在紧迫的时限之前快速完成应用开发,开发者面临的压力也越来越大。
注重编写代码时的安全问题,同时投入必要的资源,这样才能为未来的Web服务应用做好准备,同时确保当前应用的高质量。
只有从应用的出生之日开始就采取正确的措施来确保其安全性,才能构造出高质量、安全的应用。