常见前端安全攻击防御

CSRF(Cross Site Request Forgy)跨站请求伪造

原理: 在第三方网站向本网站发请求
(1)用户在a站前端页面发起登录(身份认证)请求
(2)a站后端确认身份,登录成功,cookie中存在用户的身份认证信息
(3)b站前端页面向a站后端发起请求,带着a站的cookie信息(身份认证信息),请求成功

特点:
b站发送的请求带着a站的cookie信息;
b站发送请求不经过a站的前端;
http请求头中的referer为b站

防御:
(1)禁止第三方网站携带本网站的cookie信息:设置same-site属性,same-site属性有两个值,Strict(所有的第三方请求都不能携带本网站的cookie)和Lax(链接可以,但是form表单提交和ajax请求不行)
(2)本网站前端页面添加验证信息:使用验证码或者添加token验证
(3)referer验证:禁止来自第三方的请求

XSS(Cross Site Scripting)跨站脚本攻击

(1)原理:页面渲染的数据中包含可运行的脚本
(2)攻击的基本类型:反射型(url参数直接注入)和存储型(存储到DB后读取时注入)
(3)注入点:HTML节点内的内容(text);HTML中DOM元素的属性;Javascript代码;富文本

如何防御
(1)浏览器自带防御机制,主要应对反射型攻击(HTML内容或属性):http响应头中自动添加x-xss-protection,值为0(关闭),1(打开),默认打开
(2)对特定字符做转义:内容注入替换尖括号( < => < > => > ) 属性注入替换单引号或双引号( “ => " ‘ => ’ )
(3)CSP(Content Security Policy)内容安全策略:用于指定哪些内容可执行

点击劫持

原理:
第三方网站通过iframe内嵌某一个网站,并且将iframe设置为透明不可见,将其覆盖在其他经过伪装的DOM上,伪装的可点击DOM(按钮等)与实际内嵌网站的可点击DOM位置相同,当用户点击伪装的DOM时,实际上点击的是iframe中内嵌的网页的DOM从而触发请求操作

特点:
用户自己做了点击操作;用户毫不知情;

防御
Javascript禁止内嵌:当网页没有被使用iframe内嵌时,top和window是相等的;当网页被内嵌时,top和window是不相等的;可以在本网站的页面中添加如下判断

发布了34 篇原创文章 · 获赞 2 · 访问量 1639

猜你喜欢

转载自blog.csdn.net/liu_xiaoru/article/details/102496787