常见Web漏洞
1. SQL 注入
SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。
SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。
原因:当使用外部不可信任的数据作为参数进行数据库的增、删、改、查时,如果未对外部数据进行过滤,就会产生 SQL 注入漏洞。
比如:
name = "外部输入名称";
sql = "select * from users where name=" + name;
上面的 SQL 语句目的是通过用户输入的用户名查找用户信息,因为由于 SQL 语句是直接拼接的,也没有进行过滤,所以,当用户输入 '' or '1'='1' 时,这个语句的功能就是搜索 users 全表的记录。
select * from users where name='' or '1'='1';
解决方案:
具体的解决方案很多,但大部分都是基于一点:不信任任何外部输入。
所以,对任何外部输入都进行过滤,然后再进行数据库的增、删、改、查。
此外,适当的权限控制、不曝露必要的安全信息和日志也有助于预防 SQL 注入漏洞。
参考 Web 安全漏洞之 SQL 注入 - 防御方法 了解具体的解决方案。
2. XSS 攻击
XSS 攻击全称跨站脚本攻击(Cross-Site Scripting),简单的说就是攻击者通过在目标网站上注入恶意脚本并运行,获取用户的敏感信息如 Cookie、SessionID 等,影响网站与用户数据安全。
XSS 攻击更偏向前端的范畴,但后端在保存数据的时候也需要对数据进行安全过滤。
原因:当攻击者通过某种方式向浏览器页面注入了恶意代码,并且浏览器执行了这些代码。
比如:在一个文章应用中(如微信文章),攻击者在文章编辑后台通过注入 script 标签及 js 代码,后端未加过滤就保存到数据库,前端渲染文章详情的时候也未加过滤,这就会让这段 js 代码执行,引起 XSS 攻击。
解决方案:
一个基本的思路是渲染前端页面(不管是客户端渲染还是服务器端渲染)或者动态插入 HTML 片段时,任何数据都不可信任,都要先做 HTML 过滤,然后再渲染。
参考 前端安全系列(一):如何防止XSS攻击? - 攻击的预防 了解具体的解决方案。
3. CSRF 攻击
CSRF 攻击全称跨站请求伪造(Cross-site Request Forgery),简单的说就是攻击者盗用了你的身份,以你的名义发送恶意请求。
原因:一个典型的 CSRF 攻击有着如下的流程:
受害者登录 a.com,并保留了登录凭证(Cookie)
攻击者引诱受害者访问了 b.com
b.com 向 a.com 发送了一个请求:a.com/act=xx(浏览器会默认携带 a.com 的 Cookie)
a.com 接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求
a.com 以受害者的名义执行了 act=xx
攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让 a.com 执行了自己定义的操作
解决方案
防止 CSRF 攻击需要在服务器端入手,基本的思路是能正确识别是否是用户发起的请求。
4. DDoS 攻击
DoS 攻击全称拒绝服务(Denial of Service),简单的说就是让一个公开网站无法访问,而 DDoS 攻击(分布式拒绝服务 Distributed Denial of Service)是 DoS 的升级版。
这个就完全属于后端的范畴了。
原因:攻击者不断地提出服务请求,让合法用户的请求无法及时处理,这就是 DoS 攻击。攻击者使用多台计算机或者计算机集群进行 DoS 攻击,就是 DDoS 攻击。
解决方案
防止 DDoS 攻击的基本思路是限流,限制单个用户的流量(包括 IP 等)。
参考 DDoS的攻击及防御 - 防御 了解具体的解决方案。
5. XXE 漏洞
XXE 漏洞全称 XML 外部实体漏洞(XML External Entity),当应用程序解析 XML 输入时,如果没有禁止外部实体的加载,导致可加载恶意外部文件和代码,就会造成任意文件读取、命令执行、内网端口扫描、攻击内网网站等攻击。这个只在能够接收 XML 格式参数的接口才会出现。
解决方案
禁用外部实体
过滤用户提交的XML数据
参考 xxe漏洞的学习与利用总结 了解具体的解决方案。
总结:
互联网和Web技术广泛使用,使Web应用安全所面临的挑战日益严峻,Web系统时时刻刻都在遭受各种攻击的威胁。在这种情况下,需要制定一个完整的Web攻击防御解决方案,通过安全的Web应用程序、Web服务器软件、Web防攻击设备共同配合,确保整个网站的安全。任何一个简单的漏洞、疏忽都会造成整个网站受到攻击,造成巨大损失。此外 ,随着Web技术的发展和更新,Web攻击手段也不断发展,针对这些最新的安全威胁,需要及时调整Web安全防护策略,确保Web攻击防御的主动性,使Web网站在一个安全的环境中为企业和客户服务。