2022年通用网关接口cgi .pdf

上传人:Q****o 文档编号:30548089 上传时间:2022-08-06 格式:PDF 页数:16 大小:179.41KB
返回 下载 相关 举报
2022年通用网关接口cgi .pdf_第1页
第1页 / 共16页
2022年通用网关接口cgi .pdf_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《2022年通用网关接口cgi .pdf》由会员分享,可在线阅读,更多相关《2022年通用网关接口cgi .pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、通用网关接口CGI 参考文献:网站设计超级COOL CGI 三味工作室编2000 年 10 月北京人民邮电出版社出版ISBN 7-115-08796-2/TP.1831 CGI 的概念:CGI(Common Gateway Interface) 通用网关接口的简称。其主要的功能是在WWW 环境下,从客户端传递一些信息给Web 服务器,再由Web 服务器去启动所指定的程序来完成特定的工作。所以简单点说,CGI 是一种通用的接口标准。CGI 可以为我们提供许多HTML (HyperText Markup Language,超文本标记语言)无法做到的功能。比如一个计算器、顾客表格的提交以及统计、搜索

2、引擎、Web 数据库等等。用 HTML是没有办法记住客户的任何信息的。要把顾客的信息记录在服务器的硬盘上,就要用到 CGI。CGI 的工作原理:CGI 是一种通用的接口标准。CGI 程序就是符合这种接口标准的,运行在Web 服务器上的程序。 它的工作就是控制信息要求,产生并传回所需的文件。CGI 由浏览器的输入触发。这个程序先看看浏览器浏览网页是怎样实现的。作为一个用户首先在浏览器的地址栏中添加上要访问的主页地址并回车触发这个申请。浏览器将申请发送到服务器上。Web 服务器接收这些申请并根据 .htm 或.html 的后缀并认识到这是HTML 文件。 Web 服务器从当前硬盘或内存中读取正确的

3、HTML 文件,然后将它送回浏览器。HTML文件将被用户的浏览器解释并将结果显示在用户浏览器上。CGI 程序可以用来在web 内加入动态的内容。通过接口,浏览器能够发送一个可执行应用程序的HTTP 请求,而不仅仅只是静态的HTML 文件。服务器运行指定的应用程序,这个应用程序读取与请求相关的信息,获得请求传过来的数值。例如使用者填写HTML表单提交了数据,浏览器将这些数据发送到Web 服务器上。 Web 服务器接收这些数据并根据客户机指定的CGI 程序把这些数据递交给指定的CGI 程序,并使 CGI 在服务器上运行。 CGI程序运行结束, 生成 HTML 页面, Web服务器把 CGI 程序运

4、行的结果送回用户浏览器。HTML文件将会被用户的浏览器解释并将结果显示在用户浏览器上。CGI 的基本工作情况如下图所示:CGI的输入与输出:Web 服务器 与 CGI 程序之间通过四种途径进行通信: 环境变量、命令行、标准输入和标准输出。其中负责输入的有环境变量、命令行和标准输入。命令行只用于ISINDEX 查询 , 较少使用。环境变量存放服务器向CGI 程序传递的一些运行参数, 比如 REQUEST_METHOD 表示用户提出请求或提交数据的方法是GET 还是 POST 。方法 (METHOD) 是 HTTP 中对命令的称呼。 GET 方法通过环境变量QUERY- STRING 传递用户提交

5、的数据。经过编码的数据以问号打头追加在标识CGI 脚本地址的URL 后一起传给Web 服务器 。服务器将其存于QUERY- STRING 中, CGI 程序可以通过getenv( ) 函数来读取。编码数据除了表单数据, 还可以是直接调用CGI 脚本时追加在URL 地址后面的参数。POST 方法则通过标准输入( stdin) 传名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 递提交数据。 编码了的表单数据独立地传送给Web 服务

6、器 , CGI 程序从标准输入中获得, 可以用 getchar( ) , sscanf( ) , fread( ) 等函数。要注意的是数据的长度是通过读取环境变量 CONTENT_LENGTH 获得的 , 而不是通过文件尾标识符来判断。CGI 编程语言的选择:目前最受欢迎的CGI 程序语言有四种:ShellScript 、 C、VisualBasic 、Perl 等等。在这里我们选用C 语言作为 CGI 的开发方式:用 C 开发有一个缺点就是本身对字符的处理上功能不是很强大,因此,用C 开发 CGI 就成为一件很不称心的事情。但是在嵌入式的开发中,我们又不得不采用C 语言。(未测试 ) 下面给

7、出一个用C 开发 CGI 的例子:此例在浏览器上显示“Hello World! ”#include #include main() printf( “ Content-type:text/html%c%c ” ,10,10); printf( “ Hello,World ” ); CGI 的传送方法:先了解一下URL 是如何工作的。URL (Uniform Resource Locator)是统一资源定位器,它包括整个 Web 页面,如图像,脚本,电影,声音等等为了说明它的原理,让我们剖析一个网站的URL :http:/www.hits.org/community/blocksburg/his

8、tory/index.html其中 ,http:/ 代表用 HTTP 协议访问。“www.hits.org ”表示访问的是www.hits.org 这个站点。之后的斜线代表站点的根目录。可以把目录想像为文件夹,它是网站开发者放置网页、图像、更多子目录的地方。 在我们的例子中, Index.html 位于 history 目录下,而 history 在 blocksburg名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 目录下,

9、 blocksburg 在 community 目录下。get 方法所谓方法就是指调用CGI 程序的途径。事实上,要执行程序时,你用一种方法向服务器提出请求,此请求定义了程序如何接受这些数据。客户机提出请求的方法常用的有两种:Get 和 Post 当采用 GET 方式提交数据时, 用户提交的数据放在环境变量QUERY_STRING中。CGI程序从环境变量QUERY_STRING获得数据。 为了解释和执行程序,CGI 必须要分析 (处理)这个字符串。 QUERY_STRING被称为环境变量,关于环境变量,下面还会讲到。当你想从服务器获得数据并且不改变服务器上的数据时,应该选用GET。但是用GET

10、方式提交时,数据不经过CGI 编码,而且数据长度不能超过1K 字节。否则只能用POST 方式了。在用 GET 方式提交数据时,其实时使用URL 直接向服务器提交数据,数据加在URL名称后面,数据最前面要有“?”符号与 URL 名称分隔。例如:http:/ GET 方式的例子, HTML代码如下表所示:* 输入类型1: 输入类型1: * 当如上表格提交数据后,相当于客户机向服务器发出了一个如下的URL 请求:http:/ 和环境变量REQUEST_METHOD的值改变了,如下:QUERY_STRING “ name1=aaaa&name2=ccdd”REQUEST_METHOD GET 对于一个

11、CGI程序,用户要获取用GET方式提交的数据,就需要从环境变量QUERY_STRING中读取数据。在环境变量REQUEST_METHOD中,记录这次数据是用什么方法提交的。如GET。下面给出一个用C 编写的获取用户数据的程序代码。大致的思想是先按” & ” 分成若干段。再对每个小段用“”分成变量名字和对应的变量值(未测试 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 16 页 - - - - - - - - - #include #include typedef s

12、truct char name128; char val128; entry; void getword(char *word,char *line,char stop); char x2c(char *what); void unescape_url(char *url); void plustospace(char *str); main(int argc,char *argv) entry entries50; int x; int m=0; char *cl; if(strcmp(getenv() printf(Content-type:text/html%c%c,10,10); pr

13、intf( 本代码只能处理GET 方式提交的数据n); exit(1); cl=getenv(QUERY_STRING); if(cl=NULL) printf( 没有提交数据); exit(1); for(x=0;clx!=0;x+) m=x; getword(entriesx.val,cl,&); plustospace(entriesx.val); unescape_url(entriesx.val); getword(entriesx.name,entriesx.val,=); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

14、 - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - /* your code*/ void getword(char *word,char *line,char stop) int x=0; int y; for(x=0;(linex)&(linex!=stop);x+) wordx=linex; wordx=0; if(linex) +x; y=0; while(liney+=linex+); char x2c(char *what) char digit; digit=(what0=A?(what0 & 0 xdf) -A)+10:

15、(what0-0); digit *=16; digit + =(what1=A?(what1 & 0 xdf) -A)+10:(what1-0); return(digit); void unescape_url(char *url) int x,y; for(x=0,y=0;urly;+x,+y) if(urlx=urly)=% urlx=x2c(&urly+1); y+=2; urlx=0; void plustospace(char *str) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -

16、 - - - 第 5 页,共 16 页 - - - - - - - - - int x; for(x=0;strx;x+) if(strx=+) strx=; (已测试版本在通用网关接口cgiget_exmget_test 中)修改部分仅仅是将*cl 改成一个cl128 POST 方法使用 POST 方法时, Web 服务器通过STDIN (标准输入) ,向 CGI 程序传送数据。服务器在数据的最后没有使用EOF 字符标记, 因此 CGI 程序为了正确的读取STDIN ,必须使用环境变量 CONTENT_LENGTH。在环境变量CONTENT_LENGTH中存有用户提交的数据长度。当你发送的数

17、据改变Web服务器端的数据或者你想给CGI 程序传送的数据超过了1024字节(这是 URL 的极限长度) ,应该使用POST 方法。用 POST 方式提交时,数据经过CGI 编码,而且数据的长度没有限制。下面时 POST 方式提交数据的例子,HTML 代码利于表中 输入类型1: 这次提交所导致服务器环境变量CONTENT_TYPE 、环境变量 REQUEST_METHOD和环境变量 CONTENT_LENGTH的值改变了,如下:CONTENT_LENGTH25 CONTENT_TYPE application/x-www-form-urlencoded REQUEST_METHOD=POST

18、上面的环境变量中,较值得注意的时CONTENT_LENGTH,这个环境变量,这个环境变量代表的是提交数据的长度,以供CGI 程序参考。其计算的方式是以CGI 编码后的实际长度为其值,所以上例的提交数据为:“name1=aa+bb&name2=cc%3Ddd ” 长度为 25 个字节在环境变量REQUEST_METHOD中,记录这次数据是用什么方法提交的。比如POST。在环境变量CONTENT_TYPE中,记录这次数据提交是经过CGI 编码的。大致的思想如下:先读入 STDIN ,然后以 &作为分隔符分隔开来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -

19、- - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 再以等号分隔下面是使用C 语言来读取POST 方式提交数据(未测试)/* * Version 2.1 */ #include #include #include #include #define LF 10 #define CR 13 #define MAX_ENTRIES 10000 char *makeword(char *line,char stop); char *fmakeword(FILE *f,char stop ,int *len); char x

20、2c(char *what); void unescape_url(char *url); void plustospace(char *str); typedef struct char *name; char *val; entry; /*/ /*/ main(argc, argv) int argc; char *argv; entry entriesMAX_ENTRIES; register int x,m=0; int cl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第

21、 7 页,共 16 页 - - - - - - - - - /*/ /* Do some error checking */ /*/ if(strcmp(getenv(REQUEST_METHOD),POST) printf(Content-type: text/html%c%c,10,10); printf( “ This script should be referenced with a METHOD of POST.n” ); exit(1); if(strcmp(getenv(CONTENT_TYPE),application/x-www-form-urlencoded) print

22、f(Content-type: text/html%c%c,10,10); printf( “ Thist script can only be used to decode form result.n ” ); exit(1); /* How long is the content? */ cl = atoi(getenv(CONTENT_LENGTH); /*/ /* Main loop to extract content */ /*/ for(x=0;cl & (!feof(stdin);x+) m=x; entriesx.val = fmakeword(stdin,&,&cl); p

23、lustospace(entriesx.val); unescape_url(entriesx.val); entriesx.name = makeword(entriesx.val,=); /其他程序 /* End of Main */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - char *makeword(char *line, stop) int x = 0,y; char *word = (char *) mal

24、loc(sizeof(char) * (strlen(line) + 1); for(x=0;(linex) & (linex != stop);x+) wordx = linex; wordx = 0; if(linex) +x; y=0; while(liney+ = linex+); return word; char *fmakeword(FILE *f, char stop, int *cl) int wsize; char *word; int ll; wsize = 102400; ll=0; word = (char *) malloc(sizeof(char) * (wsiz

25、e + 1); while(1) wordll = (char)fgetc(f); if(ll=wsize) wordll+1 = 0; wsize+=102400; word = (char *)realloc(word,sizeof(char)*(wsize+1); -(*cl); if(wordll = stop) | (feof(f) | (!(*cl) if(wordll != stop) ll+; wordll = 0; return word; +ll; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理

26、 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - char x2c(char *what) register char digit; digit = (what0 = A ? (what0 & 0 xdf) - A)+10 : (what0 - 0); digit *= 16; digit += (what1 = A ? (what1 & 0 xdf) - A)+10 : (what1 - 0); return(digit); void unescape_url(char *url) register int x,y; for(x=0,y=0;urly

27、;+x,+y) if(urlx = urly) = %) urlx = x2c(&urly+1); y+=2; urlx = 0; void plustospace(char *str) register int x; for(x=0;strx;x+) if(strx = +) strx = ; CGI 的编码方式在 CGI 传递数据的整个过程中,为了要从服务器传递有关输入数据给CGI 程序,服务器将不同的数据转换为各种环境变量以供CGI 程序调用。这些环境变量是在服务器执行CGI程序时被设定。 CGI 如何将用户经FORM 所输入的数据经过怎样的处理再送到CGI 程序中,这个是 CGI 的关

28、键所在。在 FORM 中,每一输入栏中必须设定NAME 属性。当数据被送出时,NAME 属性的值会和其相对应的VALUE 属性的值被转换成“NAME=V ALUE ”的形式。 如果各数据中间有空格的话会以 ” +” 代替;有特殊字符则以“XX ”代替。其中“XX ”为特殊符号的16 进制 ASCII 码。这些特殊字符包括了“&”,” =” 、ASCII 码 128 以上的字符及中文。下面是 CGI 编码规则:(1)变量之间使用” &”符号分隔开名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

29、- 第 10 页,共 16 页 - - - - - - - - - (2)变量与其对应值之间用“”隔开(3)空格用“”代替(4)特殊字符(5)空格为非法数据(6)任意不可打印的ASCII 控制字符为非法字符下面是一个表单的例子: 你的姓名: 你的密码: 你的性别: 男 女 数据提交到服务器后,由于使用POST 方式提交,数据存在STDIN 中。使用下面的语句从 STDIN 中读取到buffer 变量中read(STDIN ,buffer,env ,CONTENT_LENGTH? ); 此时, buffer 中的数据是“ name=%D5%C5%C8%FD&pwd=ab+cd&sex=Male”

30、FORM 中共有三个输入区:一个是” name” ,输入“张三”,经过 CGI 编码。 ” 张” 的 CGI编码是 ” %D5%C5% ” 。“三” 的 CGI 编码是 ” 5%C8%FD” 。 所以 name=%D5%C5%C8%FD 第二个输入区是” pwd” ,用户输入的是” ab cd ” (中间有一个空格)。 经过编码后空格为 “”故 pwd=ab+cd。同样sex=Male 所以最后提交的数据格式:“name=%D5%C5%C8%FD&pwd=ab+cd&sex=Male”CGI 环境变量环境变量的基本概念:服务器与CGI 程序交换信息的协作方式是通过环境变量实现的。无论什么请求,

31、CGI名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - 程序总能在特定的位置找到某些信息。环境变量是一些由WEB 服务器软件声明的、保护用户信息的内存区。当服务器软件一旦运行,这些环境变量就存在与服务器的计算机中了。例如,所有的机器都有一个 PATH 环境变量, 如果在当前目录里找不到文件时,就查找PATH 变量。 当服务器收到一个请求后,它首先要收集它能得到的所有相关信息,并把它放入内存(环境变量中) ,等待 CGI 程序处

32、理。服务器收集的信息包括三个方面:第一关于服务器自身的详细信息第二关于用户的信息第三关于用户请求的信息环境变量的介绍一有关服务器信息的环境变量变量名: GETEWAY_INTERFACE 说明:所运行的 WEB 服务器软件所遵守的CGI 版本, 格式为 CGI/revision 。 比如:CGI/1.1 变量名: DOCUMENT_ROOT 说 明 : WEB服 务 器 的 站 点 的 根 的 绝 对 路 径 。 如 : C:/program file/apache group/apache/htdocs 变量名: server_name 说明:运行WEB 服务器软件的计算机的IP 地址或主机

33、名如: 变量名: server_addr 说明:运行WEB 服务器软件的计算机的IP 地址如 192.168.1.2 变量名: server_admin 说明:运行 WEB 服务器软机的计算机的系统管理员的e-mail 地址。 如: 变量名: server_protocol 说明:运行Web 服务器软件所支持的协议。如:HTTP/1.0 变量名: server_port 说明: WEB 服务器等待请求的端口号,一般是80,这是 HTTP 默认的端口号变量名: server_software 说明:所运行的Web 服务器软件的名字和版本,如 website/ 名师资料总结 - - -精品资料欢迎

34、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - - - - - - - - 变量名:二有关客户机信息的环境变量变量名: HTTP_ACCEPT 说明:列出客户机能够接受的MIME 类型,大多数现在的浏览器在发送对应于这个环境变量的头部时都包含有MIME 类型“ */* ” ,表示他们将接受任何MIME 类型。如:image/gif, image/x-xbitmap,image/jpeg,image/pjpeg, application/vnd.ms-excel,application/m

35、sword 变量名: HTTP_ACCEPT_LANGUAGE 说明:表明客户机可接受语言的ISO 代码。如: ch en 变量名:HTTP_PRAGMA 说明:设定将来要用到的服务器代理。如:NO-Cache 变量名: HTTP_REFERER 说明:指出激活当前CGI 文档的 URL 地址:如:http:/www /.html 变量名: HTTP_USER_AGENT 说明:标明客户发出请求时使用的浏览器软件类型。如:MOzilla/2 。0 三有关用户请求的环境变量变量名:CONTENT_LENGTH 说明:POST 请求中客户机向标准输入(STDIN) 发送的数据的字节数,这是一个重要

36、的环境变量。当CGI 程序从 STDIN 中读取数据时,必须知道客户机发送了多少字节的数据,才能保证准确的读取客户机提交的内容。变量名: CONTENT_TYPE 说明:客户机提交的数据的数据类型,如果用POST 方法提交时,数据是经过URL 编码的 .如:application/x-www-form-urlencoded 变量名: PATH_INFO 说明: CGI 程序名之后的附加路径信息变量名: PATH_TRANSLATED 说明: PATH_INFO 对应的绝对路径变量名: QUERY_STRING 说明:客户机用GET 方式提交数据时的数据内容,也就是传送给CGI 程序的 URL

37、中问号( ?)之后的那一个部分。这也是一个重要的环境变量,当客户机用GET 方式提交名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - 数据时, CGI 程序应该从这个环境变量中获得客户机提交的数据。变量名: REMOTE_ADDR 说明:发送给服务器的URL 请求,也就是 表单中 ACTION 属性所指定的URL地址。变量名: REQUEST_METHOD 说明:客户机提交数据的方法。GET 或 POST 变量名: SCRPT

38、_NAME 说明:运行CGI 程序在服务器上的相对路径名。如: /cgi-bin/env.pl 变量名: SCRPT_FILENAME 说 明 : 运 行 的CGI程 序 在 服 务 器 上 的绝 对 路径 名 。 如 : c:/program files/apache group/apache/cgi-bin/env.pl 环境变量的使用:几乎大多数的CGI 程序都用到下面三个重要的环境变量: REQUEST_METHOD QUERY_STRING CONTENT_LENGTH CGI 程序的激活:要在 HTML 页面上激活一个CG I 程序有三种方法:(1) FORM 激活 CGI 前面已

39、经介绍过了,在这儿再提醒一下读者。通过表单(FORM )激活一个CGI 程序,一般是使用如下的标签: 例如,要通过表单激活“hello.pl ”这个 CGI 程序处理。这个表单将通过HTTP POST 方法发给 CGI 程式,则可采用如下的标签写法。注意别忘了使用” submit” 按钮,否则,你的表单是没法提交的。 。 。 。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - (2)超链接激活CGI 在 HTML 页面上激活

40、CGI 程序的另一种方法是通过超链接激活。在HTML 中,超链接是通过标签 来实现的。它可以链接到一个页面,一个图片,也可以链接到一个CGI 程序。例如按如下的方法激活test.pl 这个 CGI 程序。运行 当用户激活这个链接时,同时就激活了这个CGI 程序。“?”后的部分是提交给CGI 的数据,这相当于客户机向服务器发出了一个如下的URL 请求:http:/ 时,客户机总是以HTTP GET 的方式提交数据给CGI 程序的。CGI 的安全性1、CGI 程序中容易出现的安全问题2、如何建立安全的CGI 程序3、CGI 安全性的资源1、 CGI 安全吗?CGI 程序是安全性问题的主要来源。CG

41、I 程序的安全问题在于两个方面:(1) 它们会有意无意的泄漏主机系统的信息,帮助黑客侵入(2)处理远程用户输入的如表格的内容或发送E-mail 的称程序,可能容易被远程用户作为执行服务器上某些指令的窗口。2、使用安全的CGI 程序(1)避免透露关于你的站点和系统的过多信息(2)如果你用编译语言如C 编码,避免都用户输入的大小作出假设安全上的漏洞一个主要来源是编码时允许读用户输入的字符缓冲区溢出。下面是一个安全有漏洞的简单例子。#include #include Static char query_string1024; Char *read_post() 名师资料总结 - - -精品资料欢迎下

42、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 16 页 - - - - - - - - - Int query_size; Query_size=atoi(getenv( “ content_legth” ); Fread(query_string,query_size,1,stdin); Return query_string; 这里的问题是程序假设用户通过POST 请求提供的输入不会超过静态输入缓冲区的大小,本例中是1024 字节。这是不好的。黑客如果通过提供好几倍于该大小的输入来攻击这种程序, 缓冲

43、区溢出使程序崩溃,有些情况下这种崩溃可以被黑客利用来远程执行命令,为了避免这种情况,你应该动态分配缓冲区的大小。如果没有足够的内存来存放输入,就返回NULL 。下面是重写过的代码。char *read_post() int query_size=atoi(getenv( “”); if(query_sting != NULL) fread(query_string,query_size,1,stdin); return query_string; (3)千万不要吧未检查的用户输入传递给shell 命令。这点是CGI 程序中最容易出现问题的地方了。( 4)不要在表单中的HIDDEN 输入类型中加载某些重要的系统参数。用户是能看到或修改 HIDDEN 输入类型中的值的。 HIDDEN 输入类型在服务器送到浏览器的原始HTML代码中是可见的。 要看 HIDDEN 输入类型的值, 用户只需在浏览器菜单里选择“查看源码” 。同样的道理,没有什么可以阻止用户设置HIDDEN 输入类型的值未任意值并把它送回给你的 CGI 程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 16 页 - - - - - - - - -

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

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁