0
点赞
收藏
分享

微信扫一扫

前端登录+前端攻击

狐沐说 2022-02-18 阅读 69

文章目录

前端登录介绍

Cookie+Session

HTTP 是一种无状态的协议,客户端每次发送请求时,首先要和服务器端建立一个连接,在请求完成后又会断开这个连接。这种方式可以节省传输时占用的连接资源,但同时也存在一个问题:每次请求都是独立的,服务器端无法判断本次请求和上一次请求是否来自同一个用户,进而也就无法判断用户的登录状态。
为了解决HTTP无状态的问题,有了Cookie的出现。

有了Cookie之后,服务器端就能够获取客户端传过来的信息了,如果需要对信息进行验证,还需要通过Session。

登录验证过程

首次登陆时:

  • 用户访问x.com,并输入密码登录。
  • 服务器验证密码无误后,创建SessionId,并将它保存起来。
  • 服务器端响应这个 HTTP 请求,并通过 Set-Cookie 头信息,将 SessionId 写入 Cookie 中。

后续登陆时:

  • 用户访问x.com时,会自动带上第一次登录时写入的Cookie。
  • 服务器比对Cookie中的SessionId和保存在服务器端的SessionId是否一样。
  • 一样则成功登录

存在的问题

  • 服务器端需要对接大量的客户端,也就需要存放大量的SessionId,导致服务器压力过大。
  • 服务器端可能是一个集群,为了同步登录态,需要将SessionId同步到每一台机器,增加了服务器的维护成本。
  • 由于 SessionId 存放在 Cookie 中,所以无法避免 CSRF 攻击。

Token登录

登陆验证过程

首次登陆时:

  • 用户访问x.com输入账号密码,并点击登录。
  • 确认无误后,创建Token。
  • 服务器端将Token返回给客户端,由客户端自由保存。

后续登录时:

  • 用户访问x.com,带上第一次登录时的Token。
  • 服务器端验证Token,正确则验证成功。

Token生成方式

最常见的 Token 生成方式是使用 JWT(Json Web Token),jwt实际上就是一个字符串,它由三部分组成:头部Header、载荷Payload与签名Signature,这三个部分都是json格式。

  • 头部:用于描述JWT最基本的信息。经过算法加密后形成字符串。
 {  "typ": "JWT",  "alg": "HS256"}
//在这里,我们说明了这是一个JWT,并且我们所用的签名算法是HS256算法。
  • 载荷:可以用来放一些不敏感的信息。进行加密后得到字符串。
  • 签名:将两个编码后的字符串连接在一起,提供一个密钥得到加密后的内容。再将签名也连接起来,就得到了完整的JWT。携带在url中。

特点

  • Token不用存放在服务器端,减少服务器的压力。
  • Token可以存放在前端任何地方,可以不用保存在Cookie中,提升页面安全性。
  • 服务器端想收回Token权限不容易。

前端攻击方式

xss–跨站脚本攻击

xss全称是Cross Site Scripting,即跨站脚本攻击。恶意攻击者往 Web 页面里嵌入恶意的客户端脚本,当用户浏览此网页时,脚本就会在用户的浏览器上执行,进而达到攻击者的目的。比如获取用户的 Cookie、导航到恶意网站、携带木马等。

xss攻击分类

XSS有三类:反射型XSS(非持久型)、存储型XSS(持久型)和DOM XSS。

  1. 反射型XSS
    发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。
  2. 存储型XSS
    存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。
  3. DomXSS
    DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。

CSRF攻击

CSRF全称是Cross—Site Request Forgery,即跨站点请求伪造。 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

CSRF攻击攻击原理及过程

  1. 用户user访问受信任网站A,输入用户名和密码发出请求登陆网站。
  2. 用户通过验证后,网站A产生Cookie信息并返回给浏览器。
  3. 用户未退出网站A之前,在同一浏览器中,访问网站B。
  4. 网站B接受到用户请求后,返回一些攻击性代码,并发出请求要访问第三战点A。
  5. 浏览器接收到攻击性代码后,根据网站B的请求,在用户不知情得情况下携带Cookie访问网站A。导致网站B的恶意代码被执行。
举报

相关推荐

0 条评论