网络安全:XSS 和 CSRF

一、XSS(跨站脚本攻击)

1. 什么是XSS?

XSS(Cross-Site Scripting),跨站脚本攻击是指恶意攻击者往Web页面里插入恶意script代码,当用户浏览该页之时,嵌入其中Web里面的script代码会被执行,从而达到恶意攻击用户的目的。

2. XSS攻击分类:

(1)反射性:URL参数直接注入

<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

(2)存储型:存储到数据库后读取注入

<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

3. XSS攻击的危害:script能干啥就干啥

  • 获取页面数据
  • 获取cookie
  • 窃取用户资料信息
  • 发送请求
  • 劫持前端逻辑

4. XSS攻击防御手段

(1)转义字符:

  • 黑名单:用户的输入是不可信的,最普遍的方法就是转义输入的内容,比如对于引号("")、尖括号(<>)、斜杠(/)进行转义。但是对于富文本来说,显然不能通过上面的方法转义所有字符,因为会把需要的格式也过滤掉。
  • 白名单:使用xss转义库,自动转义script等标签

(2)为cookie设置httpOnly属性

这是防范XSS攻击的最有效方式,如果cookie中设置了HttpOnly属性,那么cookie只在HTTP传输中有效,通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容。

二、CSRF(跨站请求伪造)

1. 什么是CSRF?

CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的WEB攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。

  • 用户已经登陆了站点A,并在本地记录了cookie
  • 在用户没有登出站点A的情况下(也就是cookie生效的情况下),访问了恶意攻击者提供的引诱危险站点B
  • 站点B此时可以访问站点A,站点A没有做任何CSRF防御

 2. CSRF的危害

利用用户登录态,盗取用户身份进行操作

3. CSRF防御手段

(1)后端检验refer

Referer是HTTP请求请求头的一个字段,携带了发送请求页面的URL,后端通过检验Referer可以进行CSRF防御。但是https请求请求头中没有Referer,且Referer也是可以伪造的。

(2)验证码:人机识别

(3)cookie进行hash:攻击者在访问站点A时,虽然浏览器可以在请求中携带cookie,但是站点A不仅仅通过cookie判断用户身份,同时通过用户发送的内容中的伪随机数来判断请求是否是用户发送的。攻击者在请求时,不能在提交的内容中产生伪随机数

(2)验证码

(3)cookie值

你可能感兴趣的:(网络安全)