web开发前端安全问题总结

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种 “互联网软件 “采用客户端 服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点

CSRF(Cross-site request forgery)跨站请求伪造

即攻击者通过伪造请求攻击目标网站漏洞。

CSRF漏洞检测:

检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

工具有:CSRFTesterCSRF Request Builder等。

防御CSRF攻击:

  1. 通过 referer、token、验证码或者自定义的HTTP头属性信息 来检测用户提交。
  2. 尽量不要在页面的链接中暴露用户隐私信息。
  3. 对于用户修改删除等操作最好都使用post 操作 。
  4. 避免全站通用的cookie,严格设置cookie的域。
  5. 设置referrer-policy规则

推荐文章:《浅谈CSRF攻击方式

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

即攻击者在通过JS脚本攻击目标网站漏洞。可以分为三大类:

**反射性XSS(非持久性)**:攻击者构造可被浏览器执行输入的恶意代码(如输入框、URL地址栏),网站没有做拦截就执行攻击者的目标逻辑。

存储型XSS:网站保存攻击者的恶意代码(服务端存储了客户端的数据,但没有做任何处理,如留言板、用户信息等),并且展示时会执行恶意代码从而实现攻击者的目的。

DOM-Based型XSS:浏览器(客户端)在DOM解析时直接使用恶意数据

XSS漏洞检测

xss攻击主要还是利用白名单对HTML内容进行过滤检测。

软件检测:Burpsuit XDT

防御XSS攻击

  1. 输入输出白名单检查:过滤、转义
  2. 对重要cookie信息设置httpOnly
  3. 设置CSP

推荐文章:《XSS漏洞攻击原理与解决办法》、《XSS漏洞的原理

ClickJacking点击劫持攻击

即攻击者劫持用户的点击完成攻击目标。如通过在色情图片上悬浮透明构造好的iframe表单。

防御ClickJacking

设置X-Frame-Options

通过在网页中添加js脚本阻止被iframe嵌套

推荐文章《再谈Hijacking——JavaScript ClickJacking原理浅析

The target=”_blank” 安全缺陷

  1. 控制跳转前的页面:攻击者在目标网站插入target=”_blank”链接,用户点击插入的链接页面后,执行window.opener.location = ‘https://www.1han.wiki/',跳转到钓鱼页面,而用户而不知情况下完成钓鱼攻击。

    防御措施:为 target=”_blank” 加上 rel=”noopener noreferrer” 属性

  2. 控制跳转后的页面:具体查看《前端黑魔法之远程控制地址栏》,节选代码如下:

1
2
3
4
5
6
7
8
9
<a href="https://www.baidu.com" target="baidu" id="baidu" onclick="return start()">click me</a>
<script>
function start() {
setInterval(function() {
baidu.href="http://675ba661.2m1.pw/baidu";
baidu.click();
}, 10000);
}
</script>

这两种攻击我觉得都比较鸡肋,尤其是后者。

推荐文章:《危险的 target=”_blank” 与 “opener”》《神奇的opener对象

CRLF Injection漏洞攻击

这个漏洞应该不属于前端,但是也推荐一读《新浪某站CRLF Injection导致的安全问题

🔰本文标题: web开发前端安全问题总结

🔞本文链接: https://193.gs/webqmdranqr/index.html

🌡️本文总热度