Web开发安全之攻击篇(一) | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的的第8天。
本文将围绕着前端开发中网络编程的安全性展开,从Hacker(骇客)的角度能够如何对网站进行攻击 ,讲解web开发安全关于web攻击的小知识。
Web攻击模式
先来了解一下web的攻击模式,大致分为两大类,主动攻击和被动攻击。
web攻击方式
跨站脚本攻击XSS —— 被动攻击
- 跨站脚本攻击(Cross-Site Scripting,XSS)是一种Web应用程序安全漏洞,允许攻击者在网站的用户上注入恶意的脚本代码。攻击者通过向网站注入恶意脚本,可以窃取用户的敏感信息,控制用户的浏览器或使用用户的身份进行非法操作。
XSS分为四种类型:存储型XSS和反射型XSS,还有 基于DOM的XSS和基于渲染机制Mutation的XSS)
预防XSS攻击的方法包括对用户输入数据进行过滤和验证,使用转义字符避免注入恶意代码,并开展应用程序安全测试,以发现潜在的XSS漏洞。
跨站点请求伪造CSRF —— 被动攻击
- 跨站点请求伪造(Cross-Site Request Forgeries,CSRF),允许攻击者在目标用户已登录的情况下在其名下执行未经授权的操作。它通过伪造请求,让用户在不知情的情况下,通过在其Web浏览器中访问恶意网站或链接,将其请求发送到目标网站。
为了防范CSRF攻击,网站开发人员可以在网站后端实现以下措施:
- 使用验证令牌(如CSRF令牌)来验证请求的合法性;
- 限制请求来源的范围;
- 限制请求方法,只允许特定的HTTP方法,如GET或POST;
- 对请求中的数据进行验证;对用户进行身份验证,确保用户已登录。
SQL Injection(SQL注入)攻击 —— 主动攻击
- SQL注入攻击,利用网站应用程序对SQL数据库的不当处理,在数据库中执行非法SQL命令。攻击者可以通过在Web应用程序中输入恶意代码来欺骗应用程序,让其执行任意的SQL命令。
- 注入攻击不仅可以用于SQL服务端,在CLI脚手架、OS命令行等都可以运用。
- SSRF(Server-Side Request Forgery)严格来说不算注入,但原理相似。
为了防范SQL注入攻击,开发人员应该遵循以下安全措施:
- 使用参数化查询来防止SQL注入;
- 对用户输入数据进行验证和过滤;
- 确保数据库服务器只接受来自受信任的IP地址的请求;
- 对数据库服务器进行安全配置和审计;
- 定期备份数据库,以便在攻击发生后进行恢复。
OS命令注入攻击 —— 主动攻击
- OS命令注入攻击,它通过在Web应用程序中注入恶意OS命令来获得对系统的不当访问。攻击者可以通过构造恶意请求,使Web应用程序执行命令,从而获得对系统的访问权限。
- OS命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过OS注入攻击可执行OS上安装着的各种程序。
为了防范OS命令注入攻击,开发人员应该遵循以下安全措施:
- 对用户输入数据进行验证和过滤;
- 避免使用不安全的系统函数,如eval();
- 使用预定义的常量和白名单来限制命令的执行;
- 严格控制文件和目录的访问权限;
- 对应用程序进行安全评估和审计;
- 定期备份数据以便在攻击发生后进行恢复。
服务器端请求伪造SSRF —— 被动攻击
- 服务器端请求伪造 (SSRF) ,其目的是通过欺骗Web服务器,使其访问内部网络上的其他服务器资源。攻击者可以通过构造恶意请求,使Web服务器访问内部网络上的敏感信息,甚至可以对内部网络进行更深层次的渗透。
为了防范SSRF攻击,开发人员应该遵循以下安全措施:
- 对用户输入数据进行验证和过滤;
- 严格控制内部网络的访问,仅允许授权的服务器访问;
- 禁止使用通配符域名,如localhost;使用预定义的常量和白名单来限制请求;
- 对应用程序进行安全评估和审计;
- 定期备份数据以便在攻击发生后进行恢复。