前言
OWASP Top 10是Web安全最重要的参考标准,列出了最常见的安全风险。本文介绍每个风险的防御方法。
一、SQL注入防御
# 危险:字符串拼接
query = f"SELECT * FROM users WHERE name='{name}'"
# 安全:参数化查询
cursor.execute("SELECT * FROM users WHERE name=%s", (name,))
# ORM方式
User.objects.filter(name=name) # Django
db.query(User).filter(User.name == name) # SQLAlchemy
二、XSS防御
# 输出编码
from markupsafe import escape
safe_content = escape(user_input)
# CSP头
Content-Security-Policy: default-src 'self'; script-src 'self'
三、CSRF防御
# CSRF Token
<form method="POST">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
</form>
# SameSite Cookie
Set-Cookie: session=xxx; SameSite=Lax; Secure; HttpOnly
四、认证安全
# 密码哈希
from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
hashed = pwd_context.hash(password)
# JWT安全
# 使用RS256而非HS256
# 设置合理的过期时间
# 验证token的aud和iss
总结
防御OWASP Top 10是Web安全基础。如需安全服务,欢迎联系17老师。
关于17老师:AI应用-数字化管理-全栈开发-网络安全全栈专家。邮箱:j.d88888888@qq.com 微信:AFIST17