TOP10以及常见漏洞原理及防御

1、SQL注入漏洞

(1)原理:

攻击者通过在Web应用的输入点(如URL、表单提交等)插入恶意的SQL代码,从而破坏后台数据库的查询逻辑,达到未授权的数据库访问、数据泄露、数据篡改甚至数据库控制的目的。

(2)防御方法
  • 对输入进行严格的转义和过滤

  • 使用参数化查询:参数化查询允许将SQL语句的结构与数据分开,数据作为参数传递,而不是直接拼接到SQL语句中。

2、跨站脚本攻击(XSS)

(1)原理:

攻击者通过在目标网站上注入恶意脚本(通常为JavaScript),当用户访问被注入脚本的网站时,这些脚本会在用户的浏览器上执行,从而可能窃取用户信息、会话令牌,甚至控制用户的浏览器进行其他恶意操作。

xss有三种类型:

  • 存储型XSS

不需要用户手动触发,所有用户访问页面时都会被XSS

常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等

  • 反射型XSS

需要用户主动打开恶意的 URL 才能生效,攻击者往往会结合多种手段诱导用户点击

常见于通过 URL 传递参数的功能,如网站搜索、跳转等

  • DOM型XSS

属于前端 JavaScript 自身的安全漏洞

参考:深入解析XSS攻击:从原理到防御的全方位指南_xss注入攻击-CSDN博客

(2)防御方法
  • 对输入进行严格的转义和过滤

  • 白名单验证(只允许数字、字母、空格以及特定标签)

3、跨站请求伪造(CSRF)

(1)原理:

(2)防御方法
  • 验证HTTP Referer字段:检查HTTP请求的Referer字段,确保请求来自预期的源地址。如果Referer字段不符合预期,则拒绝该请求‌

  • 使用CSRF令牌‌:在每次表单提交时,生成一个唯一的CSRF令牌,并将其存储在用户的Session中。在表单提交时验证该令牌是否匹配,如果不匹配则拒绝请求‌

4、服务器端请求伪造(SSRF)

(1)原理:

服务端提供了从其他服务器应用获取数据的功能且没有对目标地址作过滤和限制。导致攻击者可操纵服务器向非预期的目标发起网络请求,从而绕过安全边界,访问或攻击受限资源。

(2)防御方法
  • 输入规范化与过滤

  • 白名单校验:仅允许访问预设的域名或IP

  • 协议白名单:仅允许业务必需的协议(如 http、https),禁用 file、gopher、dict 等高风险协议。

5、远程代码执行(RCE)

(1)原理:

允许攻击者远程注入并执行操作系统命令或代码,从而控制后台系统。

RCE有两种

  • 命令执行

调用操作系统命令进行执行

php下危险函数:exec、shell、system、popen等

  • 代码执行

调用服务器网站的代码进行执行

php下危险函数:eval等

(2)防御方法
  • 禁用或严格控制危险函数。

  • 对用户输入进行严格过滤和验证。

6、未授权访问

(1)原理:

应用程序没有正确实施权限控制,允许攻击者访问并执行不应该被许可的敏感操作。

(2)防御方法
  • 增加身份认证

  • 增加权限控制机制

7、XML外部实体注入

‌XML(可扩展标记语言)‌是一种用于存储和传输数据的标记语言

(1)原理:

它允许攻击者通过在XML文档中嵌入特定的实体引用,来读取文件系统上的文件,甚至是发起网络请求,从而可能导致敏感信息泄露、服务器端执行恶意代码等安全问题。

实体引用:在XML中,实体引用允许文档包含需要由应用程序处理的外部数据。例如,<!ENTITY name SYSTEM "file:///etc/passwd"> 允许引用系统文件。

DTD(Document Type Definition):在XML的DTD部分中定义实体,可以引用外部实体。例如,<!ENTITY % file SYSTEM "file:///etc/passwd">

XML解析:当XML解析器遇到这样的实体引用时,如果配置不当,它可能会尝试去加载和解析这些外部资源,使外部实体被执行,导致敏感信息泄露、服务器端执行恶意代码等安全问题。

(2)防御方法
  • 禁用外部实体解析

  • 验证和清洗输入

  • 监控和日志记录

8、安全配置错误

(1)原理:

应用程序的安全配置不当,导致安全漏洞

(2)防御方法
  • 遵循最佳实践进行安全配置

  • 定期进行安全审计和测试‌

9、不安全的反序列化

(1)原理:

反序列化过程中未进行适当的安全检查,可能导致远程代码执行。

(2)防御方法
  • 使用安全的反序列化库

  • 对输入进行严格验证‌

10、使用组件不当

(1)原理:

使用未经充分测试的第三方组件,可能导致安全漏洞

(2)防御方法
  • 使用经过安全测试的组件

  • 定期更新和维护组件‌

11、不足的日志记录和监控

(1)原理:

统缺乏足够的日志记录和监控,导致难以发现和应对安全事件

(2)防御方法
  • 实施详细日志记录和监控机制

  • 定期审查日志‌

### OWASP Top 10 Web 应用程序安全漏洞 #### 1. 注入 (Injection) 注入攻击发生在不受信任的数据作为命令或查询的一部分发送到解释器时。攻击者的恶意数据可以诱使解释器执行意外的命令或将未授权的数据暴露给攻击者[^1]。 ```sql SELECT * FROM users WHERE username = 'admin' OR '1'='1'; ``` #### 2. 破损的身份认证 (Broken Authentication) 当身份验证和会话管理实现不当,攻击者能够破坏密码、密钥或其他令牌来冒充其他用户的身份。这可能涉及暴力破解弱口令或利用已知的安全缺陷。 #### 3. 敏感数据泄露 (Sensitive Data Exposure) 许多Web应用程序未能保护敏感数据,如金融信息和个人资料,在传输过程中缺乏加密措施可能导致这些重要资产被盗取并滥用。 #### 4. XML 外部实体 (XML External Entities, XXE) 老旧或配置错误的处理器处理特别构建的XML输入可能会受到XXE的影响;如果应用程序解析未经充分清理的外部实体,则可导致服务器端请求伪造等问题。 #### 5. 破碎的访问控制 (Broken Access Control) 不恰当的权限设置允许未经授权的行为发生——无论是读取文件还是修改数据库记录等操作都应严格受限于合法用户的意图范围内。 #### 6. 安全配置错误 (Security Misconfiguration) 从网络服务到框架版本的选择,任何层面的安全设定失误都会成为潜在风险源。默认账户的存在或是不必要的HTTP方法开放都是常见例子之一。 #### 7. 跨站脚本攻击 (Cross-Site Scripting XSS) XSS让黑客通过浏览器向受害者植入恶意代码片段,进而获取cookie、重定向页面甚至完全接管用户界面交互逻辑。 #### 8. 不安全反序列化 (Insecure Deserialization) 对象状态恢复过程中的疏忽使得远程代码执行变得可行,因为不可信来源的数据可以直接影响内部工作流程而无需额外审查机制介入其中。 #### 9. 使用含有已知漏洞组件 (Using Components with Known Vulnerabilities) 第三方库虽然方便快捷但也隐藏着未知危险,一旦发现其存在公开披露过的弱点就应当立即更新替换掉旧版依赖项以消除隐患。 #### 10. 日志记录不足与监控缺失 (Insufficient Logging & Monitoring) 有效的日志体系对于追踪异常行为至关重要,然而很多情况下开发者忽视了这一点从而无法及时响应入侵事件的发生和发展趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值