【从入门到放弃系列学习笔记4】web应用安全基础整理-WEB工作机制

一、WEB访问流程

  1.  网址解析:通过DNS,host等方式进行域名解析
  2. 发送TCP进行三次握手,建立会话
  3. HTTP数据包请求
  4. HTTP数据包响应
    • html
    • php
      • mysql
      • 。。。
    • js
    • 动态结果反馈

二、WEB组成

  • 网页、网站:代码经过浏览器的渲染呈现的页面
    • 静态的网页:纯文本代码文件
      • HTML(HyperText Markup Language,超文本标记语言),在浏览器中解释运行
  • web容器:也叫web服务器,常见的有Apache/IIS/Nginx等
  • 中间件服务器:动态脚本的引擎
    • Weblogic
    • Jboss:java的中间件
    • 。。等等
  • 数据库

三、HTTP协议概述

HTTP(HyperText Transfer Protocol,超文本传输协议),是浏览器与Web服务器之间的通信协议,是传递消息的规范和要求。

概述:

  • 1990年提出,版本演进1.0-》1.1(当前版本)-》2.0  
  • HTTP是用来将html文档从Web服务器传输到Web浏览器。
  • 是一个请求和响应的协议。客户端发出的请求,服务器端对请求给出回应
  • HTTP使用的可靠的TCP连接,默认端口80

特点:

  • 支持浏览器/服务器模式
  • 简单快速:浏览器向服务器提出请求时,只需要传送请求方法和请求路径
  • 灵活:HTTP运行传输任意类型的数据对象
    • html
    • jpg
    • mp3
  • HTTP协议是无状态的协议

四、URL介绍

URL 统一资源定位符,用来告诉Web容器,浏览器所请求资源文件的路径

fragment  锚点:实现页面内定位

  • URL编码
    • URL中允许出现的字符是有限制的,除了字母、半角减号、下划线、句点、波浪号,其他字符均会被百分号编码(%+ASCII码16进制)
    • 如:#  对应 %23
    •        [ ]  对应%20
    • 即                %+ASCII码16进制
    • encode是编码
    • decode是解码

五、报文分析工具有哪些?

    • 浏览器的F12
    • Wireshark
    • fiddler   
    • Burp suite

六、HTTP请求报文的组成

HTTP的请求由请求行、请求头、请求正文三个部分组成。

  • 请求行:方法,资源路径,协议/版本
  • 请求头:从请求报文的第二行开始到第一个空行为止之间的内容
  • 请求正文:具体的请求内容,注:GET方法没有请求正文,POST方法有请求正文

七、HTTP请求行 有哪些方法?

  • GET方法
    • 最常用的方法,通常用于请求服务器发送的某个资源。
  • POST方法 
    •  可以向服务器提交参数以及表单,包括文件流等。
  • HEAD方法
    • 与GET方法类似,但服务器响应中只返回首部
  • *PUT方法
    • 与GET从服务器读取文档相反,PUT方法会向服务器写入文档
  • *TRACE方法
    • 回显浏览器的请求
  • OPTIONS方法
    • 请求WEB服务器告知其支持的各种功能
  • *DELETE方法
    • 请求服务器删除请求URL所指定的资源

*标注为风险方法

GET和POST功能相似,那么问题来了:GET方法和POST方法区别在哪?

  1. GET方法没有请求正文,参数包含在URL中,POST有。
  2. POST方法可传输表单、文件流
  3. GET方法最大传输的字节数有限制

还有一个重大区别,简单的说:

  • GET产生一个TCP数据包;POST产生两个TCP数据包。
    • 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
    • 对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

 

七、HTTP请求头的组成

请求头的组成

  • HOST
    • 主要用于指定被请求资源的Internet主机和端口号
  • User-Agent
    • 浏览器的指纹
  • Referer
    • 包含一个URL,代表当前URL的上一个URL,或者说是从哪个页面跳转过来的,CSRF知识点!!!
  • Cookie
    • 记录请求这的身份认证信息
  • Accept-Chareset
    • 用于指定客户端接收的字符集
  • Content-Type
    • 用于向接收方指示实体的介质类型,就是数据类型
  • Content-Length
    • 用于指明实体正文(请求正文)的长度,以字节方式存储的十进制数字来表示
  • Last-modified
    • 最后修改时间

八、HTTP响应报文的组成

 

响应报文由状态行(响应行)、响应报头、响应正文三部分组成。

  • 状态行:协议/版本,状态代码,描述短语
    • 状态代码:100-199 信息性状态码
    •                   200-299 成功状态码
    •                   300-399 重定向状态码
    •                   400-499 客户端错误状态码
    •                   500-599 服务器错误状态码
  • 响应报头:从响应报文的第二行开始到第一个空行为止之间的内容
    • Server 服务器指纹
    • Set-Cookie 向服务器端设置Cookie
    • Last-Modified 服务器通过这个头信息高速浏览器,资源的最后修改时间
    • Content-Length 请求正文的长度
    • Location 重定向目标页面
    • Refresh 服务器通过Refresh头告诉
  • 响应正文:网页代码

九、同源策略

  • URL的主机(FQDN)一致
  • Schema 一致
  • 端口一致

同源策略的保护对象不仅仅是iframe内的文档,比如实现Ajax时所用到的xmlhttprequest对象能够访问的URL也受到同源策略的限制。

简单的说 JS代码只能读同一个域下的网页

 

posted @ 2020-11-14 10:13  大狼崽子Lanking  阅读(134)  评论(0)    收藏  举报