什么是跨站脚本攻击
XSS 全称是 Cross Site Scripting,是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段
恶意脚本可以做哪些事情
(一)窃取 Cookie 信息
- 恶意的 js 可以通过
document.cookie
获取 Cookie 信息 - 通过 XMLHttpRequest 或者 Fetch 加上 CORS 功能可以将数据发送给恶意的服务器
- 恶意服务器拿到 cookie 信息,可以在其他电脑上模拟用户登录,然后进行转账操作
(二)监听用户行为
- 可以使用
addEventListener
监听键盘事件,比如获取用户输入银行卡信息,饭后把信息发送给恶意服务器 - 可以通过修改 DOM 伪造假的登录窗口,骗取用户名密码
- 在页面内生成浮窗广告
注入脚本的方式
(一)存储型 XSS 攻击
就是把恶意的脚本存储在服务器,脚本随着 http 请求返回到浏览器
(二)反射型 XSS 攻击
就是用户把恶意的脚本随请求发送到了网站服务器端,然后网站又把恶意的脚本返回给用户,黑客可以利用脚本做一些恶意的操作
注意:Web 服务器不会存储反射型 XSS 攻击的脚本,这个是和存储型 XSS 攻击不同的地方
(三)基于 DOM 的 XSS 攻击
这种不牵扯到 Web 服务器
就是黑客通过各种手段将恶意脚本注入到用户界面。共同点是在 Web 资源的传输过程中,或者在用户使用页面的过程中修改 web 页面的数据
如何阻止 XSS 攻击
(一)服务器对输入的脚本进行过滤或者转码
code: <script>alert("xxxxx")</script>
过滤之后:
code:
转码之后:
code:<script;alert(');xxxxx);lt;/script>
(二)充分利用 CSP
利用 CSP 策略可以对一些行为进行约束:
- 限制加载其他域下的资源文件,这样即使黑客插入了一个 js 脚本,这个 js 脚本也是无法加载的
- 禁止向第三方域提交数据,这样用户数据也不会外泄
- 禁止执行内联脚本和未授权的脚本
(三)使用 HttpOnly 属性
就是 set-cookie
属性后面用 HttpOnly
来标记 Cookie,这样标记的 Cookie 只能使用在 Http 请求的过程中,无法通过 js 脚本获取
网友评论