zoukankan      html  css  js  c++  java
  • 《图解HTTP》读书笔记

    《图解Https》也算是一本十分有名的书了,博主想从事后台开发方面的工作Http自然是要了解一下的,所以记录下读这本书学到的一些自己以前没注意的知识点。

    Http支持的方法:

    Http1.1的持久化与管线化连接

    持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。

    持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。

    Set-Cookie / Cookie是相应报文内的首部字段信息

    报文格式:

     首部字段:包含表示请求和响应的各种条件和属性的各类首部。

    一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。

    HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点。这是因为利用了虚拟主机(Virtual Host,又称虚拟服务器)的功能。即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器。所以,如果一台服务器(相同IP)内托管了 www.tricorder.jp 和 www.hackr.jp 这两个域名,当收到请求时就需要弄清楚究竟要访问哪个域名。

    在相同的 IP 地址下,由于虚拟主机可以寄存多个不同主机名和域名的 Web 网站,因此在发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。

    HTTP 通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理、网关和隧道。它们可以配合服务器工作。这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器,并且能接收从那台服务器发送的响应再转发给客户端。(这个书上详细看)

    代理:代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

    网关:网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。

    隧道:隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。

    HTTP报文格式

    请求报文:请求行(请求方法、URI、HTTP版本)+请求头(首部字段)+空行 + 报文主体

    相应报文:状态行(HTTP版本、状态码)+响应头(首部字段)+空行+报文主体

    Http常见请求头和响应头:https://blog.csdn.net/m0_37730732/article/details/82263609

    特别注意首部字段,HTTP 首部字段根据实际用途被分为以下 4 种类型。

    通用首部字段(General Header Fields):请求报文和响应报文两方都会使用的首部。

    请求首部字段(Request Header Fields):从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。

    响应首部字段(Response Header Fields):从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

    实体首部字段(Entity Header Fields):针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

    (以下是常用的首部字段及其含义(基于Http1.1),按照通用 请求  响应  实体的顺序)

     (这一部分非常建议看书,也是面试中比较重要的知识啦)

    另外还有Set-cookie和cookie字段属性

    set-cookie字段及其含义

     还有一些非标准首部字段:HTTP 首部字段是可以自行扩展的。所以在 Web 服务器和浏览器的应用上,会出现各种非标准的首部字段。

    最为常用的首部字段:X-Frame-Options(止点击劫持(clickjacking)攻击)、X-XSS-Protection(防范XSS攻击)、DNT(拒绝个人信息被收集)、P3P(保护用户隐私)

    HTTP的不安全:①通信使用明文可能会被窃听(抓包),②验证通信方的身份就可能遭遇伪装,③无法证明报文完整性,可能已遭篡改(中间人攻击)

    HTTP+ 加密 + 认证 + 完整性保护=HTTPS

     

    HTTP的常见攻击方式:

    XSS攻击:非常著名,详细了解

    SQL注入攻击:非常著名,详细了解

    OS命令注入攻击:是指通过 Web 应用,执行非法的操作系统命令达到攻击的目的。只要在能调用 Shell 函数的地方就有存在被攻击的风险。

     HTTP首部注入攻击:指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。

    邮件首部注入攻击:Web 应用中的邮件发送功能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的攻击。利用存在安全漏洞的 Web 网站,可对任意邮件地址发送广告邮件或病毒邮件。

    目录遍历攻击:是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。

    远程文件攻击:是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的 URL 充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。

  • 相关阅读:
    监控视频长度压缩算法
    获取客户端IP
    常用API接口签名验证参考
    .NET发布的程序代码防止反编译
    SQL Server 获取日期时间并格式化
    SQL Server2008R2可疑状态恢复
    限制网站报错信息暴露在外(客户端可以查看到)
    发布网站时线上网站务必把debug设置false
    IIS上的项目网站关闭Http请求中的Trace和OPTIONS
    使用uploadify上传大文件报 IO error #2038错误的解决方案
  • 原文地址:https://www.cnblogs.com/clno1/p/12794521.html
Copyright © 2011-2022 走看看