🔧 改进反向代理和Session安全配置

- 添加trust proxy配置,支持在Nginx/Cloudflare后正确识别客户端IP和协议
- 优化Session cookie配置,HTTPS环境下使用sameSite=none以支持跨域
- 移除测试脚本test_captcha.sh

这些改进确保系统在反向代理环境下正常工作,并提升了安全性。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-24 10:03:57 +08:00
parent 836c895e37
commit 46fb4d0fd0
2 changed files with 6 additions and 92 deletions

View File

@@ -22,6 +22,8 @@ const { generateToken, authMiddleware, adminMiddleware } = require('./auth');
const app = express();
const PORT = process.env.PORT || 40001;
// 在反向代理(如 Nginx/Cloudflare后部署时信任代理以正确识别协议/IP/HTTPS
app.set('trust proxy', process.env.TRUST_PROXY || true);
// 配置CORS - 严格白名单模式
const allowedOrigins = process.env.ALLOWED_ORIGINS
@@ -72,15 +74,17 @@ app.use(express.json());
app.use(cookieParser());
// Session配置用于验证码
const isSecureCookie = process.env.COOKIE_SECURE === 'true';
const sameSiteMode = isSecureCookie ? 'none' : 'lax'; // HTTPS下允许跨域获取验证码
app.use(session({
secret: process.env.SESSION_SECRET || 'your-session-secret-change-in-production',
resave: false,
saveUninitialized: true, // 改为true确保验证码请求时创建session
name: 'captcha.sid', // 自定义session cookie名称
cookie: {
secure: process.env.COOKIE_SECURE === 'true',
secure: isSecureCookie,
httpOnly: true,
sameSite: 'lax', // 添加sameSite属性
sameSite: sameSiteMode,
maxAge: 10 * 60 * 1000 // 10分钟
}
}));