Web开发安全-攻击 | 青训营笔记

101 阅读3分钟

这是我参加第五届青训营伴学笔记创作活动的第8天。

前端开发的世界非常精彩,能够用代码创造出精美、流畅的页面,但是也暗藏着许多安全问题。从两个角度来看到web安全,就是hacker的攻击和开发者的防御。

攻击

Cross-Site Script(XSS)

XSS是称为跨站脚本攻击,是往页面中注入恶意脚本。当访问到页面,这些恶意脚本会被执行,可能会导致隐私泄露强制使用计算机资源(例如挖矿)等影响。

XSS利用了开发者没有将用户提交的内容进行过滤或者转义,从而转成DOM,例如document.write、innerHTML等API。

XSS一般都是暗地执行脚本,通常是很难从UI上察觉到的。它能够窃取用户信息(如cookie、token)等,甚至能通过执行JS脚本来绘制UI弹窗,来诱导用户填写表单,导致隐私泄露。

XSS攻击分为几种:

  • Stored XSS 存储型XSS

  • Reflected XSS 反射型XSS

存储型XSS攻击是将恶意脚本存入数据库中,然后通过访问页面来读数据进行攻击。假设用户填写了表单,表单内容是一段script标签内容,如果这段内容随表单提交了,存在数据库里,那么就完成了一次XSS攻击。这种攻击危害最大,因为对所有用户可见

反射型XSS直接从URL攻击,例如将攻击脚本嵌入URL的query字段,然后根据字段生成HTML标签,这样就完成了攻击。

Cross-site request forgery(CSRF)

CSRF攻击是在用户不知情情况下,利用用户权限来构造HTTP请求,窃取或者修改用户信息。

假设一个用户收到了封邮件,用户点进邮件的url。这是攻击者伪造的页面,当用户访问该页面,就会带着用户的cookie等信息,向银行发送转账请求。银行服务器接受到请求,发现验证通过,然后用户在不知情的情况下被转账了。

SQL注入

SQL注入是攻击者将SQL语句填写到表单中,表单没有没有经过过滤,将SQL语句返回到服务器,然后就会执行SQL语句,会导致攻击者能够对数据库进行增删改查操作。

Denial of Service(DOS)

DOS是通过某种方式构造大量请求,消耗服务器资源,导致服务器来不及响应其他请求,进而导致服务器崩掉了。

ReDOS是基于正则表达式贪婪匹配模式,贪婪匹配会导致回溯,增加响应时间,降低接口吞吐量。

DDOS是在短时间内,收到来自大量僵尸设备请求,服务器不能及时完成,导致请求堆积产生雪崩效应

总结

知彼知己,百战不殆,作为开发者,认识攻击者常用的攻击,才能够做好防御。