XSS攻击叫做跨站脚本攻击,一共有三种:存储型XSS、反射型XSS、DOM型XSS。
一、存储型XSS
存储型XSS的过程是这样的:
-
攻击者将一段恶意代码注入到服务器。
-
当用户请求含有恶意代码的页面时,服务器返回。
-
客户端执行恶意代码,而已代码将用户的Cookie等信息发送给攻击者的服务器。
-
攻击者拿到Cookie信息就可以登录用户账号。
这种攻击,恶意代码一般是在向评论、留言板等,前端能做的就是对输入的内容进行过滤和转义。
二、反射型XSS
反射型XSS的过程是这样的:
-
攻击者在url的参数中加入一段script代码,比如:http://localhost:3000/?xss=。xss后面是一段js代码,被过滤了。
-
在请求是发向服务器,服务器对这个地址没有进行校验就给通过,返回给客户端。
-
客户端的页面上就会有该alert。
这个过程中的alert换成获取用户cookie的代码,就可以获取到用户的cookie信息,登录用户账号。
一般在搜索框或者url中,不保存在服务器的。
三、DOM型XSS
DOM型XSS的特点是在网络传输或者用户使用页面的过程中,通过注入一段恶意代码,改变页面的结构或者数据。
总结:
对于xss攻击的防范方法有:
- 客户端对输入进行转义和过滤。
- 客户端对提交的数据进行转移和过滤。
- 使用csp指定信任源。
- 对cookie设定httpOnly属性,禁止js操作cookie。