• 主页
  • 相册
  • 随笔
  • 目录
  • 存档
Total 244
Search AboutMe

  • 主页
  • 相册
  • 随笔
  • 目录
  • 存档

网络小知识-2

2020-09-05

1. 通信协议

相互通信的双方(或多方)对如何进行信息交换所必须遵守的一整套规则

  • 语法:语法是用户数据与控制信息的结构与格式,以及数据出现顺序的意义
  • 语义:用于解释比特流的每一部分的意义
  • 时序:事件实现顺序的详细说明

2. OSI七层模型

开放式系统互联(Open System Interconnection)

2.1. 物理层

从数据链路层接收帧,将比特流转换成底层物理介质上的信号

2.2. 数据链路层

  • 提供数据的流量控制

    数据链路层的可靠传输通常使用确认和超时重传两种机制来完成 。

    • 确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认 。
    • 超时重传是指发送方在发送某一个数据帧以后就开启一个计时器 ,在一定时间内如果没有得到发送的数据帧的确认帧 ,那么就重新发送该数据帧,直到发送成功为止 。
  • 检测和纠正物理链路产生的差错

2.3. 网络层

  • 寻址并解决与数据在异构网络间传输相关的所有问题

    无线个域网(如Bluetooth)、无线局域网(如Wi-Fi)、无线城域网(如WiMAX)、公众移动通信网(如2G、3G)以及Ad Hoc网络等多种接入网共存的异构无线网络

2.4. 传输层

  • 在系统之间提供可靠的、透明的数据传输,提供端到端的错误恢复和流量控制

2.5. 会话层

  • 提供节点之间通信过程的协调
  • 负责执行会话规则(如:连接是否允许半双工或全双工通信)、同步数据流以及当故障发生时重新建立连接

2.6. 表示层

  • 提供数据格式、变换和编码转换
  • 涉及正在传输数据的语法和语义
  • 将消息以合适电子传输的格式编码
  • 执行该层的数据压缩和加密

3. 非权威应答

非权威应答对应的英文是:Non-authoritative answer。什么叫非权威应答?假设某个DNS server没有域名test.com的记录信息,当有客户端通过它请求获取test.com的域名信息,此DNS Server会通过迭代递归的方式从test公司实际存储此记录信息的DNS server中获取test.com的域名信息,反馈给发出请求的客户端,同时会把test.com的记录信息放在自身缓存中放置一段时间,当又有客户端请求test.com域名解析时,此DNS server直接从自身缓存中提取返回给客户端,这个回答叫“非权威回答”,简言之凡是从非实际记录存储DNS server中获取的域名解析回答,都叫“非权威回答”。

4. 常见端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
20 	ftp-data 	FTP 数据端口
21 ftp 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用
22 ssh 安全 Shell(SSH)服务
23 telnet Telnet 服务
25 smtp 简单邮件传输协议(SMTP)
53 domain 域名服务(如 BIND)
67 bootps 引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用
68 bootpc Bootstrap(BOOTP)客户;还被动态主机配置协议(DHCP)客户使用
69 tftp 小文件传输协议(TFTP)
80 http 用于万维网(WWW)服务的超文本传输协议(HTTP)
109 pop2 邮局协议版本2
110 pop3 邮局协议版本3
143 imap 互联网消息存取协议(IMAP)
179 bgp 边界网络协议
443 https 安全超文本传输协议(HTTP)
1433 ms-sql-s Microsoft SQL 服务器
1434 ms-sql-m Microsoft SQL 监视器
2049 nfs [nfsd] 网络文件系统(NFS)
2375 docker
3306 mysql MySQL 数据库服务
3389 一般指3389端口。3389端口是Windows 2000(2003) Server远程桌面的服务端口
6379 redis
11211 mencached
27017 mongodb

5. 基于https的dns

http:

  • 窃听
  • 篡改

https:

  • 浏览器和服务器之间仍然存在一些未加密的消息。 这意味着消息传递的路径上仍然有人可以窃取你的消息

操作系统如何知道使用哪个解析器? 有两种可能的方法。

  • 你可以为你的计算机配置一个信任的解析器。 但很少有人这样做。
  • 相反,大多数人只是使用默认值。 默认情况下,操作系统将只使用网络告诉它的任何解析器。 当计算机连接到网络并获取其 IP 地址时,网络会推荐一个解析器

威胁

  • 跟踪
    • 很容易获取全部或部分 IP 地址信息并找出谁在请求该网站。 这意味着 DNS 服务器和通向该 DNS 服务器的路径上的任何其他路由器 (路径路由器) 都可以创建一个关于你的文件。 他们可以创建一个你访问过网站的记录
  • 欺骗

解决

  • 使用可信递归解析器避免不可靠的解析器

    • cloudflare
  • 通过基于 HTTPS 的 DNS 防止路径上的窃听和篡改

  • 图解基于HTTPS的DNS - 云+社区 - 腾讯云

6. cookie跨域

  • cookie的同源策略仅是domain和path(域名) 不区分端口和协议

  • cookie使用不同的源定义方式,一个页面可以为本域和任何父域设置cookie,只要是父域不是公共后缀(public suffix)即可

  • .aa.com和aa.com的cookie是跨域

  • https://localhost:8080/ 和 http://localhost:8081/的Cookie是共享的

6.1. 第三方cookie

  • 第一方 Cookie 是由地址栏中列出的网站域设置的 Cookie
  • 三方 Cookie 来自在网页上嵌入广告或图片等项的其他域来源

比如,访问A这个网站,这个网站设置了一个Cookie,这个Cookie也只能被A这个域下的网页读取,这就是第一方Cookie。如果还是访问A这个网站,网页里有用到B网站(和A网站的域名是不同的)的一张图片,浏览器在B请求图片的时候,B设置了一个Cookie,那这个Cookie只能被B这个域访问,反而不能被A这个域访问,因为对我们来说,我们实际是在访问A网站时,被设置了一个B这个域下的Cookie,所以叫第三方Cookie。


第一方Cookie和第三方Cookie,都是网站在客户端上存放的一小块数据。他们都由某个域存放,只能被这个域访问。他们的区别其实并不是技术上的区别,而是使用方式上的区别

由于淘宝、天猫、支付宝域名不同,导致禁止第三方cookie后,登陆、付款什么的无法互通,简单说就是登陆不上、付不了款


SameSite 支持 Strict / Lax / None 三种值。Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送Cookie。

7. file域的同源策略

在之前的浏览器中,任意两个file域的URI被认为是同源的。本地磁盘上的任何HTML文件都可以读取本地磁盘上的任何其他文件。

如今只有当源文件的父目录是目标文件的祖先目录时,文件才能读取另一个文件

8. 源的更改

同源策略认为域和子域属于不同的域,例如 child1.a.com 与a.com / child1.a.com 与 child2.a.com / xxx.child1.a.com 与 child1.a.com 两两不同源。

对于这种情况,可以在两个方面各自设置 document.domain='a.com'来改变其源来实现以上任意两个页面之间的通信。

另外因为浏览器单独保存端口号,这种赋值会导致端口号被重写为 null

9. 跨源访问

  • 通常允许跨域写操作(Cross-origin writes)
    • 链接(links)
    • 重定向
    • 表单提交
  • 通常允许跨域资源嵌入(Cross-origin embedding)
  • 通常不允许跨域读操作(Cross-origin reads)

10. cors(跨域资源共享,Cross-origin resource sharing)

比如,站点 http://domain-a.com 的某 HTML 页面通过<img> 的 src 请求 http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源

出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略, 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头。

10.1. 什么情况下需要 CORS ?

Web 字体 (CSS 中通过 @font-face 使用跨域字体资源), 因此,网站就可以发布 TrueType 字体资源,并只允许已授权网站进行跨站调用。

10.2. 知乎csrf漏洞

10.2.1. 前提

首先用户在访问知乎后,知乎会为用户设置一个随机Cookie,叫_xsrf。用户在填写表单的时候,表单里会自动插入一个隐藏的项目,也叫_xsrf。

用户提交表单的时候,后端会将表单里插入的_xsrf和cookie中所带的_xsrf进行比对。如果二者相同,则说明为合法的表单。


这种解决方法其实比较常见,因为在没有xss的情况下,黑客无法获取到cookie中的_xsrf,不在同一个域,也无法获取表单中的_xsrf。二者都无法获取到,所以保证了表单的安全

10.2.2. 然而有xss

curl https://link.zhihu.com/?target=http://www.baidu.com发现是用location.hash实现跳转,并且未过滤,使得可以在link.zhihu.com域下执行javascript伪协议(设置document.cookie)

10.2.3. 知乎/Tornado/Python对于同名cookie的处理

这个方法有个特点:解析了HEADER中的Cookie以后,一个个赋值在self中。如果存在同名Cookie的话,后者将覆盖前者。

10.2.4. CSRF

这涉及到cookie的机制了。x.a.com域下,可以设置x.a.com的cookie,也可以设置.a.com的cookie。所以,我们在link.zhihu.com下利用XSS设置.zhihu.com的COOKIE。这样,在www.zhihu.com的数据包中,将会带着两个_xsrf,其中一个为已知的

10.2.5. 攻击

  • 利用link.zhihu.com的xss,设置cookie: _xsrf=aaaaaa; domain=.zhihu.com
  • 设置表单中的_xsrf=aaaaaa;
  • POST数据包,关注目标用户

11. 客户端禁止cookie,session还能用吗?

  • 通过url重写,把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数。
  • 服务器的返回数据中包含 sessionid,浏览器发送请求时,携带 sessionid 参数。
  • 通过 Http 协议其他 header 字段,服务器每次返回时设置该 header 字段信息,浏览器中 js 读取该 header 字段,请求服务器时,js设置携带该 header 字段。

12. Chunk码

Transfer-Encoding: chunked 表示输出的内容长度不能确定,普通的静态页面、图片之类的基本上都用不到这个。

但动态页面就有可能会用到,但我也注意到大部分asp,php,asp.net动态页面输出的时候大部分还是使用Content-Length,没有使用Transfer-Encoding: chunked。

不过如果结合:Content-Encoding: gzip 使用的时候,Transfer-Encoding: chunked还是比较有用的。

记得以前实现:Content-Encoding: gzip 输出时,先把整个压缩后的数据写到一个很大的字节数组里(如 ByteArrayOutputStream),然后得到数组大小 -> Content-Length。

13. 参考

  • 客户端禁止cookie,session还能用吗? - ConstXiong - 博客园
  • 知乎某处XSS+刷粉超详细漏洞技术分析 | 离别歌
  • 第一方Cookie和第三方Cookie - Eric-Shen - 博客园
  • Computer Network
  • Notes
信安小知识-8
php速成
  1. 1. 1. 通信协议
  2. 2. 2. OSI七层模型
    1. 2.1. 2.1. 物理层
    2. 2.2. 2.2. 数据链路层
    3. 2.3. 2.3. 网络层
    4. 2.4. 2.4. 传输层
    5. 2.5. 2.5. 会话层
    6. 2.6. 2.6. 表示层
  3. 3. 3. 非权威应答
  4. 4. 4. 常见端口
  5. 5. 5. 基于https的dns
  6. 6. 6. cookie跨域
    1. 6.1. 6.1. 第三方cookie
  7. 7. 7. file域的同源策略
  8. 8. 8. 源的更改
  9. 9. 9. 跨源访问
  10. 10. 10. cors(跨域资源共享,Cross-origin resource sharing)
    1. 10.1. 10.1. 什么情况下需要 CORS ?
    2. 10.2. 10.2. 知乎csrf漏洞
      1. 10.2.1. 10.2.1. 前提
      2. 10.2.2. 10.2.2. 然而有xss
      3. 10.2.3. 10.2.3. 知乎/Tornado/Python对于同名cookie的处理
      4. 10.2.4. 10.2.4. CSRF
      5. 10.2.5. 10.2.5. 攻击
  11. 11. 11. 客户端禁止cookie,session还能用吗?
  12. 12. 12. Chunk码
  13. 13. 13. 参考
© 2024 何决云 载入天数...