• Web安全学习笔记(四):web通信基础之HTTP


    --------------------开始--------------------

    0x01:前言

            今天没有学习新知识,搞了一天SRC,毫无战果。在这先立个flag,短期内一定要挖到一个补天专属SRC。现在基本都是早起吃完早点,去freebuf看两篇大佬们的挖洞经验,有时能学到东西,大多数连看都看不懂,我觉得还是我的基础不牢。

            综合上述原因,我决定将我基础的学习笔记整理进来,让自己加深一下印象,如果正巧你刚入门web安全,希望这些基础知识能帮到你对基本的入门有个概念。再说现在也不会有人看,自己还需要提升好多,也想多学些知识,多分享一些干货,趁现在有精力,那就将web安全的一些最基础的知识,整理出来,随着我学的知识多了,也一定会分享更多干货(这也算一个flag)。

    --------------------正题--------------------

            今天整理的内容是:web通信基础,其中涉及到url,http的知识,主要还是http,这是web通信的核心,这也是要学web安全我认为最先要学的知识,而且有些地方一定要牢记。

    ●.URL(Uniform Resource Locator,统一资源定位符)

            url大家都不会陌生,访问一个网页最基本的元素。主要记住访问的格式就好了。

    ✔.详细格式:

    ①.schema://host[:port#]/path/.../[?query-string][#anchor]

    ②.协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]

    ✔.协议类型:

    http——超文本传输协议资源

    https——用安全套接字层传送的超文本传输协议

    ftp——文件传输协议

    mailto——电子邮件地址

    ldap——轻型目录访问协议搜索

    file——当地电脑或网上分享的文件

    news——Usenet新闻组

    gopher——Gopher协议

    telnet——Telnet协议

    --------------------小分隔--------------------

    ●HTTP(HyperText Transfer Protocol,超文本传输协议)

            HTTP是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。HTTP是WEB通信的基础。

            HTTP协议下分为两部分:请求报文和响应报文。

    ✔.请求报文:

    这张图很详细的将请求报文的格式展现了出来,下面是针对具体细节来整理一下。

        ○.请求方法:

    GET:请求指定页面信息,并返回主体,数据插入进URL中进行传输。

    POST:向指定资源提交数据进行请求,数据被放在请求数据体中传输。

    HEAD:类似GET请求,但只获取头部信息,无响应体。

    PUT:将传输数据取代指定文档传输。

    DELETE:请求服务器删除指定页面。

    CONNECT:与代理服务器可以进行管道方式连接。

    OPTIONS:查询针对请求URL指定资源支持的方法。

    TRACE:可以对请求消息的传输路径追踪。

    MOVE:请求服务器将指定的页面移动到另一个网络地址上。

            

            列举了常见的请求方法,最主要是用到GET,POST两个方法。值得注意的是,GET方法是将查询输入插入到URL中请求,而POST方法则是将查询数据插入到请求数据体中查询。

            HTTP请求报文中的URL为请地址的路径。协议版本一般现在都是用的是HTTP 1.1版本。

        ○.HTTP请求头部:

    格式---> 首部字段名:字段值

    Hsot:请求资源的服务器

    User-Agent:客户端程序的信息

    If-Match:比较实体标记(Etag)

    If-Modified-Since:比较资源更新的时间

    Authorization:web认证信息

    Accept:用户代理可处理的媒体类型

    Accept-Charset:优先的字符集

    Accept-Encoding:优先的内容编码

    Accept-Language:优先的语言(自然语言)

     

    用Burp抓了一个包,第一个是用GET方法请求的,第二个则是POST方法,两者区别在于请求的方式,POST很明显在将传输数据的时候将数据放在了请求体中,这样相对来说比GET方式安全一些,一般常用于用户登录。

    ✔.响应报文:

         响应报文组成:

    第一行:HTTP协议版本 + 状态码 + 原因短语

    下面若干行:可选的响应首部信息

    空行

    剩下的消息:响应的信息

        ○.响应状态码:

    1xx:信息,服务器收到请求,需要请求者继续执行相关操作。

    2xx:成功,操作被成功接受并处理。

    3xx:重定向,需要进行附加操作以完成请求。

    4xx:客户端错误,请求中存在语法错误,服务器无法处理请求。

    5xx:服务器错误,服务器在处理请求的过程发生了错误。

            •常见的状态码:

    200 OK:表示客户端发来的请求在服务器端被正常处理了。

    301 Not Modified:表示客户端附带条件的请求,未满足条件。

    400 Bad Request:表示请求报文中存在语法错误。

    401 Unauthorized:表示发送的请求需要有通过HTTP认证的信息。

    403 Forbidden:表明对请求资源的访问被服务器拒绝了。

    404 Not Found:服务器无法找到请求的资源。

    500 Internal Server Error:表明服务器端在执行请求时发生了错误。

    503 Service Unavailable:表明服务器暂时处于超负载或进行停机维护。

    详细状态码大全:http://www.runoob.com/http/http-status-codes.html

        ○.响应头部:

    Server:服务器的信息

    Location:状态码出现3xx是一般会配合该头部指向重定向的地址。

    Set-cookie:服务器想用户发放的表示凭证。

        ·HttpOnly:使JavaScript脚本无法获取cookie,防止xss攻击。

    X-Frame-Options:控制网站内容在其他web网站的Frame标签内的显示问题。防止点击劫持攻击;

        ·DENY:拒绝

        ·SAMEORGIN:仅同源域名下的页面匹配时许可

    X-Powered-By:可以知道web后端语言(但是可以修改)

            HTTP基本上了解这些就够了,当然想要了解更多的可以去看一下《图解HTTP》很不错的一本书,言简意赅,比《HTTP权威指南》友爱多了。

    ---------------遇见问题,解决问题---------------

  • 相关阅读:
    marMariaDB & MYSQL flexviews
    tomcat与resin的比较
    nginx 1.4.3能直接升到1.8.1吗
    Docker Compose vs. Dockerfile
    分布式事务 spring 两阶段提交 tcc
    linux下拷贝整个目录
    MySQL :: Fatal error: Can't change to run as user 'mysql'. Please check that the user exists!
    python Drools
    KubeCon CloudNativeCon China 2019
    在mysql中修改表名的sql语句
  • 原文地址:https://www.cnblogs.com/7089fy/p/9450854.html
Copyright © 2020-2023  润新知