Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述其实现原理、特点和常见问题,最后介绍检测该方式常见应用问题的测试思路和方法。

1.web页面的概念

Web是internet上一个非常重要的资源信息网,产生于20世纪90年代初,它遵循超文本传输协议,以超文本或超媒介的形式传送各种各样的信息,为用户提供了一个具有友好的图形化界面——Web页面,以便用户阅读internet上的信息文档。Web页面其实是一个单一的文件,其特点主要表现在:
       1)Web是图形化的和易于导航的。Web可以在一页上同时显示色彩丰富的图形和文本的性能,同时Web非常易于导航,它可以在各页各站点之间进行浏览了。
       2)Web与平台无关。无论你的系统平台是什么,你都可以通过Internet访问WWW。
       3)Web是分布式的。大量的图形、音频和视频信息可以放在不同的站点上。只需要在浏览器中指明这个站点就可以了。
       4)Web 是动态的。Web站点的信息包含站点本身的信息,信息的提供者可以经常对站上的信息进行更新,Web动态的特性还表现在Web是交互的,通过超连接可以连接任意可以连接的页面,从服务器方获得动态的信息。

2.URL地址传递参数方法概述

Web页面是动态和交互的,Web页面之间的数据交换往往存在一些参数的传递,不管是通过哪种语言平台编写Web页面处理程序,其参数传递的方式方法类似,且多种多样,常见方式主要包括通过URL地址、Application/Session、Cache、Cookie以及基于服务器文件或数据库等。
URL地址传递参数方式在我们Web页面程序处理中非常常见,其形式是在页面地址后面附带参数的方式浏览页面,如:“http://test.net/Expert/PostNew.asp?room=301”,其中“room=301”即我们传递的参数名称和值。URL地址方法可以很方便的在页面之间切换并传递参数,无需额外的处理,基于正常情况下不会产生性能损失,以Asp.net程序中URL参数传递处理为例,其简单处理过程如下:
发送页面处理程序a.aspx:
Send_url = “b.aspx?name=” + paraValue;
Response.Redirect(s_url);
接收页面处理程序b.aspx:
Receive_value=Request.QueryString["name"];
URL地址传递参数方式特点主要表现在以下几个方面:
1)URL地址法简洁易用,可同时传递多个字符型参数;
2)URL地址法可以很方便的在页面之间切换并传递参数,无需额外的处理,基于正常情况比较不会性能损失;
3)URL传递参数长度受限,最大为2K;
4)URL只能传递字符型参数;
5)信息泄露:URL地址在客户端可见,导致会泄露信息,可能被黑客用来攻击系统。

3.URL地址传递参数常见应用问题

1)因URL传递参数长度受限,最大为2K,在应用中可能会出现超出范围时的处理错误;
2)URL只能传递字符型参数,在应用中,经常会传递一些中文名的参数或URL地址,因为发送页面和接收页面的字符编码方式不一样而导致参数解析处理错误,参数包含中文时出现乱码或者参数接收错误;
3)Web程序中对字符编码的方法多种多样,但是有些方法对一些特殊字符,如:! @ # $& * ( ) = : / ; ? + '中的某些不能进行编码,因此对参数中包含某些特殊字符时不能正确处理,当参数中包含这些特殊字符时,软件接收处理出现异常;
4)URL可以传递一定长度大小字符型参数,在应用中经常通过URL接收的参数需要进一步进行逻辑处理,比如类型转换或者数字计算操作等,处理过程中开发人员可能会对参数在界面输入时限制处理不充分,而且开发人员在后续逻辑处理中过分信任传递过来的参数而未进行充分逻辑判断,导致在后续的逻辑处理中出现边界处理或者类型转换的错误,导致程序出现异常甚至崩溃;
5)URL地址中的参数经常与数据库SQL语句中的参数关联,如果开发人员对SQL语句参数化处理不完善,通过URL地址传递参数也容易引起SQL注入问题,参数中包含特殊字符、类型或者长度不符合要求时导致程序出错,甚至可以通过这个入口破坏或者获取数据库信息;
6)URL显示传递参数,容易产生信息泄露问题,一些关键信息URL地址在客户端可见,这些信息可能被黑客用来攻击系统。

4.URL地址传递方式常见问题测试方法

针对采用URL地址传递参数的Web程序,为发现及解决其应用问题,我们通过以下几个方面进行测试:
1)分析软件需求,是否需要处理超过2K大小的参数,如需要则通过Web界面控件或者URL输入超出2K大小参数进行测试,通过这种方式可以发现软件是否可以正常处理超出2K大小参数的需求问题;如无需求也可以通过此测试检测软件在参数大小超过2K时是否进行了相应的限制或者错误处理;
2)通过Web界面控件或者URL输入中文字符参数进行测试,检测软件在接收页面处理是否正常,是否出现乱码或者异常错误;
3)通过Web界面控件或者URL输入各种特殊字符,例如:! @ # $& * ( ) = : / ; ? + '等,检测软件接收处理是否正常,是否可以显示处理必须的特殊字符;
4)通过Web界面控件或者URL输入参数边界值,同时包括输入各种类型参数,检测软件运行是否正常;
5)通过Web界面控件或者URL输入包含跟数据库SQL语句相关的一些特殊字符参数如’= 和一些关键字符串等,检测软件是否存在SQL注入问题,同时也可以采用一些安全测试工具,对URL输入参数进行SQL注入的渗透测试;
6)检测URL参数中是否包含关键信息,并可通过获取信息通过安全测试工具进行恶意破坏或者攻击测试。

5.应用建议

针对URL地址传递参数应用问题,在应用中有如下建议:
1)在安全性要求较高的系统中不推荐使用这种方法,只适合在一些安全性要求不高,页面逻辑比较的简单的场合;
2)对参数长度超出2K的传递建议不要采取此方式;
3)对地址信息进行编码,且保证发送页面和接收页面编码和解码方式对应一致;
4)对从URL地址中接收的参数信息进行边界和类型校验;
5)为防止信息泄露,对URL传递的参数进行加密处理,同时需要考虑加密和解密过程的性能损失;
6)为防止信息泄露,也可对URL进行重写,经过一定算法重组的URL信息,使在IE中不显示真正的参数或者网页链接信息。

总结

Web页面参数传递方式多种多样,各有优缺点,用户在开发和测试过程中,针对各自特点选择相应方式进行设计和相关处理。在Web页面处理程序测试过程中,测试人员应先充分了解Web页面参数传递采用的方式,如果采用URL地址进行参数传递,则根据其特点和应用中常见的问题,采用正确的方法进行测试,以解决各种应用问题,提高Web应用程序的质量。

转:Web页面通过URL地址传递参数常见问题及检测方法的更多相关文章

  1. 获取Url地址中参数的3种方法【华为云技术分享】

    获取Url的代码如下:window.location.href; 方法一:原生js(假设已经获得了Url地址) var url = 'https://gitbook.cn/gitchat/geekbo ...

  2. 获取网页URL地址及参数等的两种方法(js和C#)

    转:获取网页URL地址及参数等的两种方法(js和C#) 一 js 先看一个示例 用javascript获取url网址信息 <script type="text/javascript&q ...

  3. web工程中URL地址的推荐写法

    三.web工程中URL地址的推荐写法 使用c标签<c:url value="" /> 会自动添加项目名 -> value中的值 前面要加 “/” 在JavaWeb ...

  4. JSP页面间传递参数的5种方法

    JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp? ...

  5. web工程中URL地址的写法

    在开发中我们不可避免的要碰到许多需要写URL地址的情况,这常常让我们感到头疼.下面笔者推荐一种简单的做法.URL地址分为绝对路径和相对路径两种.相对路径又分为相对资源路径和相对根路径.显然绝对路径在开 ...

  6. 关于一些url中传递参数有空格问题

    1.关于一些url中传递参数有空格问题: url.replace(/ /g, "%20") 从上面的例子中可以看到可以用:replace(/ /g, "%20" ...

  7. 使用Spring mvc接收整个url地址及参数时注意事项

    使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...

  8. [Xcode 实际操作]九、实用进阶-(24)使用Segue(页面的跳转连接)进行页面跳转并传递参数

    目录:[Swift]Xcode实际操作 本文将演示使用Segue(页面的跳转连接)进行页面跳转并传递参数. 参照结合:[Xcode10 实际操作]九.实用进阶-(23)多个Storyboard故事板中 ...

  9. php函数按地址传递参数(php引用)

    php函数按地址传递参数(php引用) 一.总结 1.php引用:php引用和c++一样,都是在变量前加&(取地址符号) 2.php函数按地址传递参数:php函数按地址传递参数(php引用)也 ...

随机推荐

  1. Error parsing 'file:///media/RHEL_5.5\\ x86_64\\ DVD/Server'

    Error parsing 'file:///media/RHEL_5.5\\ x86_64\\ DVD/Server' http://lindows.iteye.com/blog/456637 ht ...

  2. DHCP的若干原理解释

    转自:http://blog.chinaunix.net/uid-22287947-id-1775641.html 搜罗了几种关于dhcp的原理和过程解释 DHCP(Dynamic Host Conf ...

  3. Bootstrap看厌了?试试Metro UI CSS吧

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:Bootstrap作为一款超级流行的前端框架,已经成为很多人的首选,不过有时未免有点审 ...

  4. 中断处理流程,ok6410

    中断处理流程 CPU在工作的过程中,经常需要与外设进行交互,交互的方式包括”轮询方式”,”中断方式”. 1.轮询方式: CPU不断地查询设备的状态.该方式实现比较简单,但CPU利用率很低,不适合多任务 ...

  5. jquery中append()、prepend()、after()、before()的区别详解

    append() - 在被选元素的结尾插入内容(内容的结尾,比如说有个a标签,则是在</a>这个标签之前添加东西) prepend() - 在被选元素的开头插入内容(内容的开始,比如说有个 ...

  6. ios二维码扫描

    1.添加AVFoundation.framework框架 2,控制器中实现 //第一步添加AVFoundation.framework框架 #import "ViewController.h ...

  7. 驱动中获取PsActiveProcessHead变量地址的五种方法也可以获取KdpDebuggerDataListHead

    PsActiveProcessHead的定义: 在windows系统中,所有的活动进程都是连在一起的,构成一个双链表,表头是全局变量PsActiveProcessHead,当一个进程被创建时,其Act ...

  8. winform基础窗体设置及基础控件

    WinForm - 也叫做C/S  客户端 另:B/S是 网页端 客户端应用程序 - 是需要安装在用户电脑上才可以使用的程序 特点: 不需要联网也可以打开使用部分功能,但是现在的情况是许多功能依然需要 ...

  9. 完善SQL农历转换函数

    -------------------------------------------------------------------- --  Author : 原著:          改编:ht ...

  10. 【转】Linux 查看内存(free buffer cache)

    转自:http://elf8848.iteye.com/blog/1995638 Linux下如何查内存信息,如内存总量.已使用量.可使用量.经常使用Windows操作系统的朋友,已经习惯了如果空闲的 ...