当前位置: 首页 > news >正文

安全常见漏洞

一、OWASP Top 10

1.注入漏洞

(1)SQL 注入

  • 原理:通过用户输入注入恶意SQL代码
  • 示例:

    sql

    -- 恶意输入
    ' OR '1'='1
    -- 可能被注入的SQL
    SELECT * FROM users WHERE username = '' OR '1'='1' AND password = ''

(2)防护措施:

  • 使用参数化查询
  • 使用ORM框架
  • 实施最小权限原则

2.失效的访问控制

(1)常见问题:

  • 不安全的直接对象引用 (IDOR)
  • 权限提升
  • CORS配置错误

(2)示例:

http

GET /api/user/123 HTTP/1.1
Host: example.com
Authorization: Bearer <user_token_for_id_456>

(3)防护

  • 实现适当的访问控制检查
  • 使用随机ID而非自增ID
  • 实施最小权限原则

3.加密失效

(1)常见问题

  • 使用弱加密算法
  • 不安全的密钥管理
  • 使用HTTP明文传输敏感数据

(2)防护

python

# 使用安全的加密库
from cryptography.fernet import Fernet# 生成密钥
key = Fernet.generate_key()
cipher_suite = Fernet(key)# 加密
cipher_text = cipher_suite.encrypt(b"Secret message")

4.不安全的依赖项

(1)风险:

  • 使用含有已知漏洞的第三方库
  • 过时的依赖项

(2)检查工作:

bash

# 使用 pip-audit 检查Python依赖
pip install pip-audit
pip-audit# 使用 OWASP Dependency-Check

5.安全配置错误

(1)常见问题:

  • 默认凭证未修改
  • 不必要的服务开启
  • 错误配置的CORS

(2)防护:

  • 定期进行安全审计
  • 自动化配置检查
  • 最小化安装原则

6.易受攻击和过时的组件

(1)管理策略:

  • 维护完整的软件物料清单(SBOM)
  • 定期更新依赖
  • 订阅安全公告

7.认证和授权失败

(1)防护措施:

  • 实施多因素认证
  • 密码策略
  • 账户锁定机制

(2)示例:

python

# 密码强度检查示例
import redef is_strong_password(password):if len(password) < 12:return Falseif not re.search(r"[A-Z]", password):return Falseif not re.search(r"[a-z]", password):return Falseif not re.search(r"[0-9]", password):return Falseif not re.search(r"[!@#$%^&*(),.?\":{}|<>]", password):return Falsereturn True

8.软件和数据完整性故障

(1)防护:

  • 代码签名
  • 依赖验证
  • 完整性检查

9.安全日志和监控不足

python

import logging
from logging.handlers import RotatingFileHandler# 配置日志
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',handlers=[RotatingFileHandler('app.log', maxBytes=1024*1024, backupCount=5),logging.StreamHandler()]
)logger = logging.getLogger(__name__)# 记录安全事件
def log_security_event(user_id, event_type, details):logger.warning("Security Event - User: %s, Type: %s, Details: %s",user_id, event_type, details)

10.服务器端请求伪造(SSRF)

(1)防护措施:

  • 实施白名单
  • 验证和清理用户输入
  • 使用网络分段
(2)

python

import requests
from urllib.parse import urlparsedef safe_fetch_url(url):# 验证URLparsed = urlparse(url)allowed_domains = ['api.trusted.com', 'cdn.trusted.com']if parsed.netloc not in allowed_domains:raise ValueError("访问被拒绝: 未授权的域名")response = requests.get(url, timeout=5)return response.content

http://www.lryc.cn/news/614613.html

相关文章:

  • openpnp - 不连接设备,只大概测试一下摄像头是否好使
  • Java中的方法引用操作符(::)详解与实战应用
  • Linux 运维与优化的系统化思维:从内核到生产环境的全链路管理
  • 【C++】类和对象--类中6个默认成员函数(2) --运算符重载
  • 笔试——Day32
  • 基于LLM的Chat应用测试方法探索:系统化评估与持续优化
  • 企业本地知识库助手 大模型+本地知识库
  • Prometheus 监控平台部署与应用
  • 【代码随想录day 14】 力扣 104.二叉树的最大深度
  • 三种 SSE 对比
  • 【LLM开发学习】
  • 十三、抽象队列同步器AQS
  • ClickHouse集群部署实践---3分片2副本集群
  • 【C#】掌握并发利器:深入理解 .NET 中的 Task.WhenAll
  • 宝龙地产债务化解解决方案一:基于资产代币化与轻资产转型的战略重构
  • MMBFJ310LT1G一款N沟道JFE 晶体管适用于高频放大器和振荡器等射频应用MMBFJ310LT1
  • 【vue】Vue 重要基础知识清单
  • 全面解析软件工程形式化说明技术
  • Vue 服务端渲染(SSR)详解
  • 页面tkinter
  • 初始化完数据库提示缺少server文件的处理方法
  • C 语言链表数据结构
  • 接口为什么要设计出v1和v2
  • 升级的MS9122S USB投屏控制芯片(HD输出)
  • Prometheus 通过读取文件中的配置来监控目标
  • 安科瑞EMS3.0:打造“零碳工厂”的智能能源神经中枢
  • 【Spring Boot 快速入门】八、登录认证(一)基础登录与认证校验
  • 用 “故事 + 价值观” 快速建立 IP 信任感
  • Shell脚本实现自动封禁恶意扫描IP
  • 後端開發技術教學(三) 表單提交、數據處理