网络安全

1. 什么是 JWT?主要用来做什么?

JWT:Json Web Token,是基于 Json 的一个公开规范,这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换

2. JWT 由几部分组成?分别是什么?

一个 JWT 实际上就是一个字符串,它由三部分组成:头部、载荷与签名

3. JWT 校验 token 时,怎么保证数据并没有被黑客拦截并篡改?

signature 中有私钥来进行签名,可以保证安全性

  1. 客户端登录成功后,服务器会给每一台主机分配一个唯一的 session_id,用来区分他们,除了存入服务器的缓存,数据库或者内存中,还会把这个 session_id 返回给相应的客户端

  2. 客户端收到 session_id 后会存入 cookie 中,以后每一次发送其他类型的请求的操作都会携带这个 session_id

  3. 服务器会将客户端发来的这个 session_id 和服务端查到的 session_id 进行对比,如果匹配,则返回给对应主机所需要的资源,否则拒绝

缺点

  1. 因为服务器缓存 session_id,需要定期清理 session_id 表

  2. 不能识别跨域请求

  3. 在分布式 (即多台服务器) 的环境下,还得做 session 同步,一般不推荐,

5. JWT 的缺陷

  1. 不安全的加密算法 JWT 给开发者提供了很多的加密算法选择,其中就包括了已知的易受攻击的算法

  2. 在 header 中包含了签名算法的种类 攻击者只需要将 header 中的 alg 字段设置为 none 就可以绕过签名验证过程,在知道服务器使用非对称加密算法的情况下,修改 alg 为一个对称加密算法

6. Paseto 相比 JWT 的改变

  • 不会向用户开放所有的加密算法

  • header 中不再含有 alg 字段,也不会有 none 算法

  • payload 使用加密算法,而不是简单的编码

7. CSRF 攻击

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

8. 防御 CSRF 攻击

前面讲到 CSRF 的一个特征是,攻击者无法直接窃取到用户的信息(Cookie,Header,网站内容等),仅仅是冒用 Cookie 中的信息。

而 CSRF 攻击之所以能够成功,是因为服务器误把攻击者发送的请求当成了用户自己的请求。那么我们可以要求所有的用户请求都携带一个 CSRF 攻击者无法获取到的 Token。服务器通过校验请求是否携带正确的 Token,来把正常的请求和攻击的请求区分开,也可以防范 CSRF 的攻击。

9. XSS CSRF SSRF 区别以及防范

  1. XSS(跨站脚本攻击):

    • 原理:攻击者通过在网页中插入恶意脚本,使用户在浏览器中执行该脚本,从而获取用户的敏感信息或进行其他恶意操作。

    • 防御方式:对用户输入进行过滤和转义、使用 HTTP Only 属性禁止 JavaScript 读取 Cookie 值、输入时校验、浏览器与 Web 应用端采用相同的字符编码等。

  2. CSRF(跨站请求伪造):

    • 原理:攻击者利用用户已登录的身份,通过伪造请求发送到受信任的网站,使用户在不知情的情况下执行恶意操作。

    • 防御方式:使用随机化的 CSRF 令牌来验证请求的合法性。

  3. SSRF(服务器端请求伪造):

    • 原理:攻击者通过构造恶意请求,使服务器发起对内部资源的请求,从而获取敏感信息或攻击内部系统。

    • 防御方式:限制协议为 HTTPS、限制 URL 白名单、限制内网 IP 等。

10. SSL 加密算法

对称加密算法

  • DES:DES 是最早被推出的加密算法之一,但由于密钥长度短,容易被暴力破解,已于 2005 年被弃用。

  • 3DES:3DES 是 DES 算法的升级版,通过三次加密提高了安全性,但也存在严重安全漏洞,预计 2023 年后将被废弃。

  • AES:AES 是 DES 的替代方案,是目前使用最广泛的对称加密算法之一。AES 密钥长度为 128、192 或 256 位,安全性高,广泛用于金融、在线交易等领域。

非对称加密算法

  • RSA:RSA 是 1977 年发明的非对称加密算法,是目前使用最广泛的公钥算法。其安全性建立在素数分解的困难性上,即使用超级计算机也很难破解。

  • ECC:ECC 又称椭圆曲线加密算法,相比 RSA 可以使用更短的密钥实现更高的安全性。160 位 ECC 加密安全性相当于 1024 位 RSA。

SSL 握手过程中,客户端和服务器通过非对称加密算法协商对称加密算法的密钥,然后使用对称加密算法加密传输的数据。这样既保证了密钥交换的安全性,又提高了数据加密的效率。

11. 对称加密和非对称加密有什么区别

对称加密

对称加密使用相同的密钥进行数据的加密和解密。发送方和接收方必须在通信前共享这个密钥。

非对称加密

非对称加密使用一对密钥,即公钥和私钥。公钥可以公开,而私钥必须保密。

Last updated