软件测试对于代码安全的诸多事宜

正如我们所见,软件测试的时候会发生各种各样的问题,尤其是在java语言中,我们可以得知我们的Java语言不同于C/C++等语言,java是解释性语言,因此存在代码被反编译的隐患;每个程序员都可以将任何项目反编译成java代码,导致了我们的代码暴露在他们面前,而某些人便可以通过其进行操作导致某些数据被截取,重新调用。当然在我们真正去编写代码的时候,我们就需要做一些关于代码安全的操作。下面将列出一些关于保证代码安全的知识。

1.1    防止注入SQL

a.除了过滤单引号“ ‘ ”,还要过滤数据库中的注释符号“ -- ”。

b.SQL语句中的字符串拼接,是很不靠谱的;实在要拼接,一定要从代码安全的角度多想想。

1.2    文件上传漏洞

现象:

假设我们使用的是IIS6.0及之前版本,当我们上传一个文件名为【安卓.aspx .jpg】,那么存到服务器上的文件将会是【安卓.aspx】。

原因:

文件名【安卓.aspx .jpg】在“.aspx”和“.jpg”之间有一个蛮像空格的符号,其实是通过16进制编码器修改出来的“ \0 ”,IIS6.0及之前版本对于上传文件名的解析是从左向右的,如果在解析时遇到空格,就认为这个文件名已经结束,于是存在服务器上的文件就是【安卓.aspx】。

解决方案:

我们一般都会对上传文件的后缀名进行检查,但是IIS的漏洞绕过了我们的检查,于是上传文件重命名就是一个不错的解决办法。我们把每次上传文件的后缀拿出来,取个新名字,再加上原后缀,这个问题就可解决。

还有两点:

a.       如果文件名中包含特殊字符,比如【安卓不是苹果.aspx;不是吧.jpg】这是一个文件名,中间包含分号“ ; ”,IIS6.0及之前版本在上传文件时正常,但是在解析时分号“ ; ”之后的文件名都不认。

b.       Apache服务器对上传文件的检查是从右向左的。

1.3    Cookie欺骗

这个应该很简单,大家都知道从哪里可以拿到cookie,怎么伪装cookie,怎么把一台机器上的cookie移到另外一台… Cookie很常用,特别在跨域访问时,我们常常会把用户名加密以后放在客户端。检查用户是否登录,就会去查看这个cookie,那么请别忘了在检查时加上客户端ip一起校验,在一定程度上可以阻止cookie欺骗。

1.4    XSS跨站脚本攻击

对于这种攻击,我们要对左右尖括号“<、>”、分号“ ; ”、单引号“ ‘ ”进行过滤。我们对于用户输入或者获取来自地址栏的参数值(Request.QueryString["XXX"]),不应支持HTML编码。处理的方法有很多,"HttpUtility.UrlEncode”就是一种。

1.5    其他漏洞

标签<body>有个属性"onload”,它会把属性中的值直接解析为javascript脚本,而不需要"<script></script>”或"javascript:”。据说淘宝曾经因为不知道这个漏洞,而导致上万的用户受到损失。

对于上述的问题我们不仅应该在测试过程中去尝试,也需要在编码过程中去避免。

时间: 2024-10-13 20:43:40

软件测试对于代码安全的诸多事宜的相关文章

软件测试与代码安全详解

前言 本人学习软件测试收获不少,于是便记录下来自己的思路与知识总结,重温自己的探索之路. 初学 开始学习软件测试,那么什么是软件测试,软件测试很重要吗?当然重要,这是毫无疑问的.那么开始学习,我们需要了解软件测试的基本概念,方法,常用测试工具(测试的时候需要,可以大大提高效率),学习测试,我们可以了解到常见的软件架构.如:B/S,C/S等,这里我比较了解B/S,因为我测试过. 我们在学习软件测试时需要了解很多要懂的知识. 常见的测试工具 当然,学习软件测试,能不自己动手就少动手,让一些测试工具自

软件测试--代码覆盖

关键词:软件测试, 代码覆盖,质量 测试环境:ubuntu 12.04 代码覆盖 CFG(Control flow graph)图.控制流图(CFG)是一个有向图抽象数据结构.它是一个过程或程序的抽象表现.每个在图形中的节点代表一个基本块,例如,没有任何跳跃或跳跃目标的直线代码块:跳跃目标以一个块开始,和以一个块结束.定向边缘被用于代表在控制流中的跳跃.CFG中的每个结点至多只能有两个直接后继. 插桩技术 在实现覆盖测试的过程中,往往需要知道某些信息,如:程序中可执行语句被执行(即被覆盖)的情况

我的第一个软件测试

1.(1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示.(单词之间用空格隔开,如“Hello World My First Unit Test”): (2)编写单元测试进行测试: (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%. 代码如下: package cn.deng;/* * 计算每个单词出现的频率 * dengchuzneng * 2016-4-1 */import java.util.HashMap;import java.util.

JSCover+WebDriver/Selenium获得JS 代码覆盖

我们看JSCover(http://tntim96.github.io/JSCover/manual/manual.xml)介绍及使用说明的时候,往往被图形界面所吸引.这样的方式比較适合手工操作,点击和输入就可以. 可是这样的往往界面和真实界面相差比較大,由于真正的网页在JSCover内部的浏览载入框中.这使得原有的Selenium代码可能存在诸多问题. 那么怎样可以尽量少地改变原有的selenium代码而又获取到js的code coverage呢?这可以採用文件模式(File Mode). 1

Smart210学习记录------块设备

转自:http://bbs.chinaunix.net/thread-2017377-1-1.html 本章的目的用尽可能最简单的方法写出一个能用的块设备驱动.所谓的能用,是指我们可以对这个驱动生成的块设备进行mkfs,mount和读写文件.为了尽可能简单,这个驱动的规模不是1000行,也不是500行,而是100行以内. 这里插一句,我们不打算在这里介绍如何写模块,理由是介绍的文章已经满天飞舞了.如果你能看得懂.并且成功地编译.运行了这段代码,我们认为你已经达到了本教程的入学资格,当然,如果你不

来篇完整的,小说接着更,为博客园早日开小说板块努力

如题,发篇完整的小说,话说本人现有一百多万的存稿,慢慢发,为代码也写到一百多万而努力. 九州2 楔子 千里江山,塞外狼烟,当是男儿去处,纵马挥戈,傲笑生死,多少君侯事! 华檐翠宇,深闺梦里,多少旧人容颜,却化作,雨打风吹去.天阙辉煌,如柯一梦,终不负帝王业! 平安时代,历经三百余年国祚的大綦王朝终于走向了时代的尽头,战乱四起,诸侯割据,这注定是一个群雄逐鹿的时代. 第一卷 乱世风云 第一章 千里追杀 但凡是稍有阅历的人都知道,在这片幅员千万里的九州土地上,秋雨楼是整个天下势力最广,根脉最深,实力

LINUX块设备驱动&lt;3&gt;

转自:http://blog.chinaunix.net/uid-15724196-id-128141.html 第3章 +---------------------------------------------------+|                 写一个块设备驱动                  |+---------------------------------------------------+| 作者:赵磊                               

什么是架构

什么是软件架构 前言:软体设计师中有一些技术水平较高.经验较为丰富的人,他们需要承担软件系统的架构设计,也就是需要设计系统的元件如何划分.元件之间如何发生相互作用,以及系统中逻辑的.物理的.系统的重要决定的作出.在很多公司中,架构师不是一个专门的和正式的职务.通常在一个开发小组中,最有经验的程序员会负责一些架构方面的工作.在一个部门中,最有经验的项目经理会负责一些架构方面的工作.但是,越来越多的公司体认到架构工作的重要性. 什么是软件系统的架构(Architecture)?一般而言,架构有两个要

C++内存管理学习笔记(2)

/****************************************************************/ /*            学习是合作和分享式的! /* Author:Atlas                    Email:[email protected] /*  转载请注明本文出处: *   http://blog.csdn.net/wdzxl198/article/details/9059883 /************************