安全:
问题:常见的web前端攻击方式有哪些?
- XSS跨站请求攻击
- XSRF跨站请求伪造
XSS攻击:
- 一个博客网站,我发表一篇博客,其中嵌入
<script>
脚本 - 脚本内容:获取cookie,发送到我的服务器(服务器配合跨域)
- 发布这篇博客,有人查看它,我轻松收割访问者的cookie
演示代码:
初始化:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>XSS 演示</title>
</head>
<body>
<p>一段文字1</p>
<p>一段文字2</p>
<p>一段文字3</p>
<script>alert(document.cookie);</script>
</body>
</html>
效果:
别人来看博客,就可以获取来访者的Cookie(包括一些个人信息),发送到我的服务器。
这就是XSS攻击。
怎么预防XSS呢?
1. 替换特殊字符,如< 变为 < >变为>
2. <script>变为<,script>直接显示,而不会作为脚本执行
3. 前端要替换,后端也要替换,都做总不会有错 (提醒)
那么替换特殊字符这个工作谁比较做合适?没有更合适,都做,没有问题,前端也要替换,后端也要替换;前端什么时候替换,可以在显示的时替换;后端则在存储的时候替换。
例子:前端做替换
演示代码:
效果:
这段script显示出来了,为什么呢?因为在html中,这个<和>代表了就是要显示左括号< 和 右括号 >,浏览器会自动解析这两个特殊字符。
字符串的形式显示出来。不会作为一个脚本来攻击
xss工具推荐:npm 上搜索 xss