安装java jdk
tar -xzvf jdk-18_linux-x64_bin.tar.gz sudo cp -r jdk-18 /opt cd /opt/jdk-18
设置环境变量
vim ~/.zshrc,粘贴下面内容:
#install JAVA JDK export JAVA_HOME=/opt/jdk-18 export CLASSPATH=.:${JAVA_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
根据JAVA不同版本的JDK进行安装
sudo update-alternatives --install /usr/bin/java java /opt/jdk-11/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /opt/jdk-11/bin/javac 1 sudo update-alternatives --set java /opt/jdk-18/bin/java sudo update-alternatives --set javac /opt/jdk-18/bin/javac
最后验证版本:
java -version
安装BurpSuitePro
# BurpSuitePro 安装相关
激活过程
从 keygen.jar 复制许可证并粘贴到 Burp Suite Pro 中,然后单击下一步
在 Burp Suite Pro 的右下角选择Manual Activation Option
从 BurpSuite Pro 复制许可证请求并粘贴到 keygen.jar 的 Activation Request
从 keygen.jar 的复制Activation Response并粘贴到
BurpSuite Pro,然后下一启动步直到完成
打开keygen.jar
java -jar keygen.jar
运行BSP
java --illegal-access=permit -Dfile.encoding=utf-8 -javaagent:/opt/BurpSuitePro/loader.jar -noverify -jar /opt/BurpSuitePro/burpsuite_pro_v2022.8.1.jar
设置BSP启动快捷方式
删除burpsuite社区版
cd /usr/bin sudo rm -rf burpsuite
新建burpsuite
sudo vim burpsuite 添加如下内容 #!/bin/sh java --illegal-access=permit -Dfile.encoding=utf-8 -javaagent:/opt/BurpSuitePro/loader.jar -noverify -jar /opt/BurpSuitePro/burpsuite_pro_v2022.8.1.jar
更改文件权限
chmod +x burpsuite
添加BrupSuite快捷访问
cd /usr/share/applications sudo vim kali-burpsuite.desktop
找到Exec=一行,修改为
Exec=sh -c "/usr/bin/burpsuite"
# 数据包分析
GET / HTTP/1.1 Host: www.fsec.io User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1
Line1: GET 请求的方式 / 请求的资源链接 HTTP/1.1 协议的版本
Line2: 主机头(Host:)
Line3: 用户浏览器内容(User-Agent:) 用于识别浏览器信息
Line4-6:(Accept) 略
Line7 : (Connection) 通信状态
# 通过fsec.io 点击子链接 /price.html 后,数据包内容:
GET /price.html HTTP/1.1 Host: www.fsec.io User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Referer: http://www.fsec.io/ Upgrade-Insecure-Requests: 1
Line8:(Referer) 页面跳转
GET /sugrec?prod=pc_his&from=pc_web&json=1&sid=36549_36974_36917_37003_36570_36885_37130_37055_26350_36863_37022&hisdata=&_t=1660719711224&csor=0 HTTP/1.1 Host: www.baidu.com Cookie: BAIDUID=795B83D7F55BE0F2D44B09F5DA7B4765:FG=1; BIDUPSID=795B83D7F55BE0F23A7948A14000DE66; PSTM=1650605803; BD_HOME=1; H_PS_PSSID=36549_36974_36917_37003_36570_36885_37130_37055_26350_36863_37022; delPer=0; BD_CK_SAM=1; PSINO=2; BD_UPN=133352; BA_HECTOR=ag8l2k8da0a52l8g2ka0q3q21hfovar17; ZFY=Pv0TvxFWW9yvhlNIeWZdXRxvTZ7eQeJfNjCvqSly4Ew:C; COOKIE_SESSION=0_0_1_1_0_7_1_0_1_1_1_0_0_0_0_0_0_0_1660714338%7C1%230_0_1660714338%7C1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDRCVFR[S4-dAuiWMmn]=I67x6TjHwwYf0; H_PS_645EC=8becgk7WWFWoceInhWCeegE5ew4UdrDGyfZQokXKMRq9aupdyGLoWjOjtmy%2Fp6teOw User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Accept: application/json, text/javascript, */*; q=0.01 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: https://www.baidu.com/ Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin Te: trailers Connection: close
Line2: (Cookie) 识别用户身份,安全性的考虑
body: 提交的数据包
请求方式
GET 从服务器上获取一个静态的资源
POST 向服务器提交一个表单(获取这个资源)
HEAD 请求一个与GET请求的响应相同的响应,但没有响应体(确认服务器上有没有这个资源)# 适用于资源探测
PUT 用请求有效载荷替换目标资源的所有当前表示(上传一个文件)# iis6.0 put漏洞
DELETE 删除制定资源
TRACE 沿着到目标资源的路径执行一个消息环回测试
OPTIONS 描述目标资源的通信选项(告知服务器开启了哪些方法)
CONNECT 建立一个到由目标资源标识的服务器的隧道
请求标记头
协议头字段名 | 说明 | 示例 | 状态 |
---|---|---|---|
Accept | 能够接受的回应内容类型(Content-Types) | Accept: text/plain |
常设 |
Accept-Charset | 能够接受的字符集 | Accept-Charset: utf-8 |
常设 |
Accept-Encoding | 能够接受的编码方式列表。 | Accept-Encoding: gzip, deflate |
常设 |
Accept-Language | 能够接受的回应内容的自然语言列表。 | Accept-Language: en-US |
常设 |
Accept-Datetime | 能够接受的按照时间来表示的版本 | Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT |
临时 |
Authorization | 用于超文本传输协议的认证的认证信息 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
常设 |
Cache-Control | 用来指定在这次的请求/响应链中的所有缓存机制 都必须 遵守的指令 | Cache-Control: no-cache |
常设 |
Connection | 该浏览器想要优先使用的连接类型 | Connection: keep-alive``Connection: Upgrade |
常设 |
Cookie | 之前由服务器通过 Set- Cookie (下文详述)发送的一个 超文本传输协议Cookie | Cookie: $Version=1; Skin=new; |
常设: 标准 |
Content-Length | 以 八位字节数组 (8位的字节)表示的请求体的长度 | Content-Length: 348 |
常设 |
Content-MD5 | 请求体的内容的二进制 MD5 散列值,以 Base64 编码的结果 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== |
过时的[9] |
Content-Type | 请求体的MIME类型 (用于POST和PUT请求中) | Content-Type: application/x-www-form-urlencoded |
常设 |
Date | 发送该消息的日期和时间(按照 RFC 7231 中定义的"超文本传输协议日期"格式来发送) |
Date: Tue, 15 Nov 1994 08:12:31 GMT |
常设 |
Expect | 表明客户端要求服务器做出特定的行为 | Expect: 100-continue |
常设 |
From | 发起此请求的用户的邮件地址 | From: user@example.com |
常设 |
Host | 服务器的域名(用于虚拟主机 ),以及服务器所监听的[传输控制协议)端口号。如果所请求的端口是对应的服务的标准端口,则端口号可被省略。自超文件传输协议版本1.1(HTTP/1.1 )开始便是必需字段。 |
Host: zh.fsec.io:80``Host: zh.fsec.io |
常设 |
If-Match | 仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要作用时,用作像 PUT 这样的方法中,仅当从用户上次更新某个资源以来,该资源未被修改的情况下,才更新该资源。 |
If-Match: "737060cd8c284d8af7ad3082f209582d" |
常设 |
If-Modified-Since | 允许在对应的内容未被修改的情况下返回304未修改(304 Not Modified ) |
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT |
常设 |
If-None-Match | 允许在对应的内容未被修改的情况下返回304未修改( 304 Not Modified ),参考 超文本传输协议的实体标记 |
If-None-Match: "737060cd8c284d8af7ad3082f209582d" |
常设 |
If-Range | 如果该实体未被修改过,则向我发送我所缺少的那一个或多个部分;否则,发送整个新的实体 | If-Range: "737060cd8c284d8af7ad3082f209582d" |
常设 |
If-Unmodified-Since | 仅当该实体自某个特定时间已来未被修改的情况下,才发送回应。 | If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT |
常设 |
Max-Forwards | 限制该消息可被代理及网关转发的次数。 | Max-Forwards: 10 |
常设 |
Origin | 发起一个针对 跨来源资源共享 的请求(要求服务器在回应中加入一个‘访问控制-允许来源’('Access-Control-Allow-Origin ')字段)。 |
Origin: http://www.example-social-network.com |
常设: 标准 |
Pragma | 与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生多种效果。 | Pragma: no-cache |
常设但不常用 |
Proxy-Authorization | 用来向代理进行认证的认证信息。 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
常设 |
Range | 仅请求某个实体的一部分。字节偏移以0开始。参见字节服务。 | Range: bytes=500-999 |
常设 |
Referer | 表示浏览器所访问的前一个页面,正是那个页面上的某个链接将浏览器带到了当前所请求的这个页面。 | Referer: http://zh.fsec.io/wiki/Main_Page |
常设 |
TE | 浏览器预期接受的传输编码方式:可使用回应协议头 Transfer-Encoding 字段中的值;另外还可用"trailers"(与"分块 "传输方式相关)这个值来表明浏览器希望在最后一个尺寸为0的块之后还接收到一些额外的字段。 | TE: trailers, deflate |
常设 |
User-Agent | 浏览器的浏览器身份标识字符串 | User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0 |
常设 |
Upgrade | 要求服务器升级到另一个协议。 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
常设 |
Via | 向服务器告知,这个请求是由哪些代理发出的。 | Via: 1.0 fred, 1.1 example.com (Apache/1.1) |
常设 |
Warning | 一个一般性的警告,告知,在实体内容体中可能存在错误。 | Warning: 199 Miscellaneous warning |
常设 |
响应状态码
1xx 消息 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。[3] 这些状态码代表的响应都是信息性的,标示客户应该等待服务器采取进一步行动。 100 Continue 服务器已经接收到请求头,并且客户端应继续发送请求主体(在需要发送身体的请求的情况下:例如,POST请求),或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。要使服务器检查请求的头部,客户端必须在其初始请求中发送Expect: 100-continue作为头部,并在发送正文之前接收100 Continue状态代码。响应代码417期望失败表示请求不应继续。 101 Switching Protocols 服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade消息头中定义的那些协议 只有在切换新的协议更有好处的时候才应该采取类似措施。例如,切换到新的HTTP版本(如HTTP/2)比旧版本更有优势,或者切换到一个实时且同步的协议(如WebSocket)以传送利用此类特性的资源。 102 Processing(WebDAV RFC 2518) WebDAV请求可能包含许多涉及文件操作的子请求,需要很长时间才能完成请求。该代码表示服务器已经收到并正在处理请求,但无响应可用。[5]这样可以防止客户端超时,并假设请求丢失。 103 Early Hints 用来在最终的HTTP消息之前返回一些响应头。 2xx 成功 这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。 200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。实际的响应将取决于所使用的请求方法。在GET请求中,响应将包含与请求的资源相对应的实体。在POST请求中,响应将包含描述或操作结果的实体。 201 Created 请求已经被实现,而且有一个新的资源已经依据请求的需要而创建,且其URI已经随Location头信息返回。假如需要的资源无法及时创建的话,应当返回202 Accepted'。 202 Accepted 服务器已接受请求,但尚未处理。最终该请求可能会也可能不会被执行,并且可能在处理发生时被禁止。 203 Non-Authoritative Information(自HTTP / 1.1起) 服务器是一个转换代理服务器(transforming proxy,例如网络加速器),以200 OK状态码为起源,但回应了原始响应的修改版本。 204 No Content 服务器成功处理了请求,没有返回任何内容。在强制门户功能中,Wi-Fi设备连接到需要进行 Web 认证的 Wi-Fi 接入点时,通过访问一个能生成 HTTP 204 响应的的网站,如果能正常收到 204 响应,则代表无需 Web 认证,否则会弹出网页浏览器界面,显示出 Web 网页认证界面用于让用户认证登录。 205 Reset Content 服务器成功处理了请求,但没有返回任何内容。与204响应不同,此响应要求请求者重置文档视图。[12] 206 Partial Content RFC 7233 服务器已经成功处理了部分GET请求。类似于FlashGet或者迅雷这类的HTTP下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。 207 Multi-Status(WebDAV;RFC 4918 代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。 208 Already Reported (WebDAV;RFC 5842) DAV绑定的成员已经在(多状态)响应之前的部分被列举,且未被再次包含。 226 IM Used (RFC 3229) 服务器已经满足了对资源的请求,对实体请求的一个或多个实体操作的结果表示。 3xx 重定向 这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明。[2] 当且仅当后续的请求所使用的方法是GET或者HEAD时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。客户端应当自动监测无限循环重定向(例如:A→B→C→……→A或A→A),因为这会导致服务器和客户端大量不必要的资源消耗。按照HTTP/1.0版规范的建议,浏览器不应自动访问超过5次的重定向。 300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。 除非这是一个HEAD请求,否则该响应应当包括一个资源特性及地址的列表的实体,以便用户或浏览器从中选择最合适的重定向地址。这个实体的格式由Content-Type定义的格式所决定。浏览器可能根据响应的格式以及浏览器自身能力,自动作出最合适的选择。当然,RFC 2616规范并没有规定这样的自动选择该如何进行。 如果服务器本身已经有了首选的回馈选择,那么在Location中应当指明这个回馈的URI;浏览器可能会将这个Location值作为自动重定向的地址。此外,除非额外指定,否则这个响应也是可缓存的。 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。 新的永久性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。 如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。 注意:对于某些使用HTTP/1.0协议的浏览器,当它们发送的POST请求得到了一个301响应的话,接下来的重定向请求将会变成GET方式。 302 Found 要求客户端执行临时重定向(原始描述短语为“Moved Temporarily”)。[19]由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。 新的临时性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。 如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。 注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,并且使用GET方式访问在Location中规定的URI,而无视原先请求的方法。因此状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。 303 See Other 对应当前请求的响应可以在另一个URI上被找到,当响应于POST(或PUT / DELETE)接收到响应时,客户端应该假定服务器已经收到数据,并且应该使用单独的GET消息发出重定向。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。这个新的URI不是原始资源的替代引用。同时,303响应禁止被缓存。当然,第二个请求(重定向)可能被缓存。 新的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。 注意:许多HTTP/1.1版以前的浏览器不能正确理解303状态。如果需要考虑与这些浏览器之间的互动,302状态码应该可以胜任,因为大多数的浏览器处理302响应时的方式恰恰就是上述规范要求客户端处理303响应时应当做的。 304 Not Modified 表示资源在由请求头中的If-Modified-Since或If-None-Match参数指定的这一版本之后,未曾被修改。在这种情况下,由于客户端仍然具有以前下载的副本,因此不需要重新传输资源。 305 Use Proxy 被请求的资源必须通过指定的代理才能被访问。Location域中将给出指定的代理所在的URI信息,接收者需要重复发送一个单独的请求,通过这个代理才能访问相应资源。只有原始服务器才能创建305响应。许多HTTP客户端(像是Mozilla)和Internet Explorer)都没有正确处理这种状态代码的响应,主要是出于安全考虑。 注意:RFC 2068中没有明确305响应是为了重定向一个单独的请求,而且只能被原始服务器创建。忽视这些限制可能导致严重的安全后果。 306 Switch Proxy 在最新版的规范中,306状态码已经不再被使用。最初是指“后续请求应使用指定的代理”。 307 Temporary Redirect 在这种情况下,请求应该与另一个URI重复,但后续的请求应仍使用原始的URI。 与302相反,当重新发出原始请求时,不允许更改请求方法。 例如,应该使用另一个POST请求来重复POST请求。 308 Permanent Redirect (RFC 7538) 请求和所有将来的请求应该使用另一个URI重复。 307和308重复302和301的行为,但不允许HTTP方法更改。 例如,将表单提交给永久重定向的资源可能会顺利进行 4xx 客户端错误 这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个HEAD请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。 如果错误发生时客户端正在传送数据,那么使用TCP的服务器实现应当仔细确保在关闭客户端与服务器之间的连接之前,客户端已经收到了包含错误信息的[数据包。如果客户端在收到错误信息后继续向服务器发送数据,服务器的TCP栈将向客户端发送一个重置数据包,以清除该客户端所有还未识别的输入缓冲,以免这些数据被服务器上的应用程序读取并干扰后者。 400 Bad Request 由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。 401 Unauthorized RFC 7235 参见:HTTP基本认证、HTTP摘要认证 类似于403 Forbidden,401语义即“未认证”,即用户没有必要的凭据。该状态码表示当前请求需要用户验证。该响应必须包含一个适用于被请求资源的WWW-Authenticate信息头用以询问用户信息。客户端可以重复提交一个包含恰当的Authorization头信息的请求。如果当前请求已经包含了Authorization证书,那么401响应代表着服务器验证已经拒绝了那些证书。如果401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。 注意:当网站(通常是网站域名)禁止IP地址时,有些网站状态码显示的401,表示该特定地址被拒绝访问网站。 402 Payment Required 该状态码是为了将来可能的需求而预留的。该状态码最初的意图可能被用作某种形式的数字现金或在线支付方案的一部分,但几乎没有哪家服务商使用,而且这个状态码通常不被使用。如果特定开发人员已超过请求的每日限制,Google Developers API会使用此状态码。 403 Forbidden 服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个HEAD请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。 404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现,但允许用户的后续请求。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。 405 Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow头信息用以表示出当前资源能够接受的请求方法的列表。例如,需要通过POST呈现数据的表单上的GET请求,或只读资源上的PUT请求。 鉴于PUT,DELETE方法会对服务器上的资源进行写操作,因而绝大部分的网页服务器都不支持或者在默认配置下不允许上述请求方法,对于此类请求均会返回405错误。 406 Not Acceptable 参见:内容协商 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体,该请求不可接受。 除非这是一个HEAD请求,否则该响应就应当返回一个包含可以让用户或者浏览器从中选择最合适的实体特性以及地址栏表的实体。实体的格式由Content-Type头中定义的媒体类型决定。浏览器可以根据格式及自身能力自行作出最佳选择。但是,规范中并没有定义任何作出此类自动选择的标准。 407 Proxy Authentication Required RFC 2617 与401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个Proxy-Authenticate用以进行身份询问。客户端可以返回一个Proxy-Authorization信息头用以验证。 408 Request Timeout 请求超时。根据HTTP规范,客户端没有在服务器预备等待的时间内完成一个请求的发送,客户端可以随时再次提交这一请求而无需进行任何更改。 409 Conflict 表示因为请求存在冲突无法处理该请求,例如多个同步更新之间的编辑冲突 410 Gone 表示所请求的资源不再可用。当资源被有意地删除并且资源应被清除时,应该使用这个。在收到410状态码后,用户应停止再次请求资源。但大多数服务端不会使用此状态码,而是直接使用404状态码。 411 Length Required 服务器拒绝在没有定义Content-Length头的情况下接受请求。在添加了表明请求消息体长度的有效Content-Length头之后,客户端可以再次提交该请求。[39] 412 Precondition Failed (RFC 7232) 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。 413 Request Entity Too Large (RFC 7231) 前称“Request Entity Too Large”,表示服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。此种情况下,服务器可以关闭连接以免客户端继续发送此请求。 如果这个状况是临时的,服务器应当返回一个Retry-After的响应头,以告知客户端可以在多少时间以后重新尝试。 414 Request-URI Too Long(RFC 7231) 前称“Request-URI Too Long”,表示请求的URI长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。通常将太多数据的结果编码为GET请求的查询字符串,在这种情况下,应将其转换为POST请求。这比较少见,通常的情况包括:本应使用POST方法的表单提交变成了GET方法,导致查询字符串过长。重定向URI“黑洞”,例如每次重定向把旧的URI作为新的URI的一部分,导致在若干次重定向后URI超长。客户端正在尝试利用某些服务器中存在的安全漏洞攻击服务器。这类服务器使用固定长度的缓冲读取或操作请求的URI,当GET后的参数超过某个数值后,可能会产生缓冲区溢出,导致任意代码被执行。没有此类漏洞的服务器,应当返回414状态码。 415 Unsupported Media Type 对于当前请求的方法和所请求的资源,请求中提交的互联网媒体类型并不是服务器中所支持的格式,因此请求被拒绝。例如,客户端将图像上传格式为svg,但服务器要求图像使用上传格式为jpg。 416 Requested Range Not Satisfiable(RFC 7233) 前称“Requested Range Not Satisfiable”。客户端已经要求文件的一部分(Byte serving),但服务器不能提供该部分。例如,如果客户端要求文件的一部分超出文件尾端。 417 Expectation Failed 在请求头Expect中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服显的证据证明在当前路由的下一个节点上,Expect的内容无法被满足。 418 I'm a teapot 本操作码是在1998年作为IETF的传统愚人节笑话, 在RFC 2324[超文本咖啡壶控制协议中定义的,并不需要在真实的HTTP服务器中定义。当一个控制茶壶的HTCPCP收到BREW或POST指令要求其煮咖啡时应当回传此错误。这个HTTP状态码在某些网站(包括Google.com)与项目(如Node.js、ASP.NET])和[Go语言)中用作彩蛋 421 Misdirected Request 该请求针对的是无法产生响应的服务器(例如因为连接重用)。 422 Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应 423 Locked 当前资源被锁定。 424 Failed Dependency 由于之前的某个请求发生的错误,导致当前请求失败,例如PROPPATCH。 425 Too Early 服务器拒绝处理在Early Data中的请求,以规避可能的重放攻击 426 Upgrade Required 客户端应切换到Upgrade头字段中给出的不同协议,如TLS/1.0 428 Precondition Required 原服务器要求该请求满足一定条件。这是为了防止“未更新”问题,即客户端读取(GET)一个资源的状态,更改它,并将它写(PUT)回服务器,但这期间第三方已经在服务器上更改了该资源的状态,因此导致了冲突。” 429 Too Many Requests 用户在给定的时间内发送了太多的请求。旨在用于网络限速 431 Request Header Fields Too Large 服务器不愿处理请求,因为一个或多个头字段过大。 440 Login Time-out 客户端session超时失效,需要重新登录。 451 Unavailable For Legal Reasons 5xx 服务器错误 表示服务器无法完成明显有效的请求。这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。这些状态码适用于任何响应方法。 500 Internal Server Error 通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。没有给出具体错误信息。 501 Not Implemented 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。(例如,网络服务API的新功能) 502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。如果没有给出这个Retry-After信息,那么客户端应当以处理500响应的方式处理它。 504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。 注意:某些代理服务器在DNS查询超时时会返回400或者500错误。 505 HTTP Version Not Supported 服务器不支持,或者拒绝支持在请求中使用的HTTP版本。这暗示着服务器不能或不愿使用与客户端相同的版本。响应中应当包含一个描述了为何版本不被支持以及服务器支持哪些协议的实体。 506 Variant Also Negotiates 由《透明内容协商协议》扩展,代表服务器存在内部配置错误,[64]被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。 507 Insufficient Storage 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。 508 Loop Detected 服务器在处理请求时陷入死循环。 (可代替 208状态码]) 510 Not Extended 获取资源所需要的策略并没有被满足 511 Network Authentication Required ) 客户端需要进行身份验证才能获得网络访问权限,旨在限制用户群访问特定网络。(例如连接WiFi热点时的强制网络门户)
百分号编码(英语:Percent-encoding),又称:URL编码(URL encoding)是特定上下文的统一资源定位符 (URL)的编码机制,实际上也适用于统一资源标志符(URI)的编码。也用于为 application/x-www-form-urlencoded MIME准备数据,因为它用于通过HTTP的请求操作(request)提交HTML表单数据。
在编写HTML的时候,可能会出现我们想要页面输出的内容恰好和HTML语法的规则冲突,导致该显示的文本内容被浏览器当作了标签,进而被构造成了页面结构。因此产生了实体字符这个东西,当浏览器解析到实体字符以后,就不会把它当成页面结构,而是转换成对应的字符展示到页面上。
而实体编号是&#+字符的ascii;构成。作用和实体字符相同,也可以用来帮助浏览器识别预留字符。
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。 Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。 Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16个字符(BYTES))的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在RFC 1321中被加以规范。 将数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。 1996年后被证实存在弱点,可以被加以破解,对于需要高度安全性的资料,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞攻击,因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
ASCII (American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。 1968年版ASCII编码速见表 美国信息交换标准代码是这套编码系统的传统命名,互联网号码分配局现在更倾向于使用它的新名字US-ASCII。 美国信息交换标准代码是美国电气和电子工程师协会里程碑之一。 ASCII由电报码发展而来。第一版标准发布于1963年,1967年经历了一次主要修订,最后一次更新则是在1986年,至今为止共定义了128个字符;其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符。用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。
unicode编码我们又可以叫做是统一码。在计算机科学领域中是一中业界标准,unicode编码还包含了字符集、编码方案等等。unicode编码给每个字符提供了一个唯一的数字,不论是什么平台、不论是什么程序、不论是什么语言。unicode编码的出现是为力更好的解决传统字符在编码产生的局此案问题。并且unicode编码给每种语言中的每个字符设定了统一并且唯一的二进制编码。
常见的数据交换格式
JSON
JSON(JavaScript Object Notation)是由道格拉斯·克罗克福特构想和设计的一种轻量级资料交换格式。其内容由属性和值所组成,因此也有易于阅读和处理的优势。JSON是独立于编程语言的资料格式,其不仅是JavaScript的子集,也采用了C语言家族的习惯用法,目前也有许多编程语言都能够将其解析和字符串化,其广泛使用的程度也使其成为通用的资料格式。
格式:
{ "age": "20", "name": "张三", "sex": "男" }
XML
可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言。XML是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。
格式:
<?xml version="1.0" encoding="UTF-8"?> <o> <age type="string">20</age> <name type="string">张三</name> <sex type="string">男</sex> </o>
安装大部分内容转自:https://blog.csdn.net/forever_han13/article/details/122421287
学习内容均参考Farmsec:http://book.fsec.io/201-%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86%E4%B8%8E%E5%B7%A5%E5%85%B7/201-A-%E6%BC%8F%E6%B4%9E%E5%8E%9F%E7%90%86/201-A1-bupsuite%E7%9A%84%E4%BD%BF%E7%94%A8.html