安全常见漏洞
raise ValueError("访问被拒绝: 未授权的域名")# 使用 OWASP Dependency-Check。# 使用 pip-audit 检查Python依赖。10.服务器端请求伪造(SSRF)一、OWASP Top 10。-- 可能被注入的SQL。6.易受攻击和过时的组件。8.软件和数据完整性故障。9.安全日志和监控不足。# 使用安全的加密库。# 密码强度检查示例。
·
一、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 re
def is_strong_password(password):
if len(password) < 12:
return False
if not re.search(r"[A-Z]", password):
return False
if not re.search(r"[a-z]", password):
return False
if not re.search(r"[0-9]", password):
return False
if not re.search(r"[!@#$%^&*(),.?\":{}|<>]", password):
return False
return 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 urlparse
def safe_fetch_url(url):
# 验证URL
parsed = 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
更多推荐


所有评论(0)