XSS&CSRF&点击劫持&中间人攻击

1,386 阅读3分钟

1、什么是XSS?

XSS其实就是恶意攻击者想尽办法将可执行代码注入到页面中。

XSS分为两种:持久性和非持久性。

持久型也就是攻击的代码被服务端写入进数据库中,这种攻击危害性很大,因为如果网站访问量很大的话,就会导致大量正常访问页面的用户都受到攻击。

非持久型相比于前者危害就小的多了,一般通过修改 URL 参数的方式加入攻击代码,诱导用户访问链接从而进行攻击。

2、怎么解决XSS

(1)转义字符:普通的做法就是对输入输出的内容,对于<>、/转义。 但是这种方式对于富文本来说,是一定的影响的,会过滤到所有的格式。通常可以采用白名单(CSP)过滤。

(2)CSP

  • 通常可以通过两种方式来开启 CSP:
  • 设置 HTTP Header 中的 Content-Security-Policy
  • 设置 meta 标签的方式

3、什么是CSRF?(跨站请求伪造)

CSRF 中文名为跨站请求伪造。原理就是攻击者构造出一个后端请求地址,诱导用户点击或者通过某些途径自动发起请求。如果用户是在登录状态下的话,后端就以为是用户在操作,从而进行相应的逻辑。

4、如何解决CSRF?

防范 CSRF 攻击可以遵循以下几种规则:

  • Get 请求不对数据进行修改
  • 不让第三方网站访问到用户 Cookie(可以对cookie设置sameSite属性,表示cokkie不会随跨域请求发送)
  • 阻止第三方网站请求接口(Referer检查,验证Referer是否是第三方网站发起的)
  • 请求时附带验证信息,比如验证码或者 Token。(服务器产生随机的Token,服务请求带上Token,验证是够有效)

5、什么是点击劫持?

点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。

6、怎么解决点击劫持?

  • X-FRAME-OPTIONS:这个 HTTP 响应头 就是为了防御用 iframe 嵌套的点击劫持攻击。

该响应头有三个值可选,分别是 DENY,表示页面不允许通过 iframe 的方式展示 SAMEORIGIN,表示页面可以在相同域名下通过 iframe 的方式展示 ALLOW-FROM,表示页面可以在指定来源的 iframe 中展示

  • js防御
if(self == top) {
// 获取攻击者网页,并直接不显示
document.body.removeChild(style); 
} else {
top.location = self.location;
}

7、什么中间人攻击?

中间人攻击是攻击同时和客服端和服务端度建立了链接,并让对象都认为是安全,但是时间上这个通讯是被攻击者控制者的,攻击者不仅可以获取信息,还可以修改信息。

8、怎么防御中间人攻击?

当然防御中间人攻击其实并不难,只需要增加一个安全通道来传输信息。HTTPS 就可以用来防御中间人攻击,但是并不是说使用了 HTTPS 就可以高枕无忧了,因为如果你没有完全关闭 HTTP 访问的话,攻击方可以通过某些方式将 HTTPS 降级为 HTTP 从而实现中间人攻击。