安全性
概述
身份认证
JWT认证
use silent::prelude::*;
use jsonwebtoken::{encode, decode, Header, Validation, EncodingKey, DecodingKey};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct Claims {
sub: String,
exp: usize,
}
struct JwtMiddleware;
#[async_trait]
impl Handler for JwtMiddleware {
async fn handle(&self, req: Request, next: Next<'_>) -> Result {
let token = req.header("Authorization")
.ok_or_else(|| SilentError::Unauthorized("Missing token".to_string()))?;
// 验证token
let claims = decode::<Claims>(
&token,
&DecodingKey::from_secret("secret".as_ref()),
&Validation::default()
).map_err(|_| SilentError::Unauthorized("Invalid token".to_string()))?;
next.run(req).await
}
}Session管理
CSRF防护
CSRF Token
XSS防护
内容安全策略
输入验证
SQL注入防护
参数化查询
文件上传安全
文件验证
安全Headers
配置安全Headers
最佳实践总结
Last updated