40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from flask import render_template, jsonify
|
|
import bleach
|
|
import re
|
|
|
|
def sanitize_error_message(message):
|
|
"""
|
|
清理和验证错误消息
|
|
"""
|
|
if not message:
|
|
return "发生未知错误"
|
|
|
|
# 移除任何敏感信息
|
|
message = re.sub(r'(password|token|key|secret)=[\w\-]+', r'\1=[FILTERED]', str(message))
|
|
|
|
# 清理HTML和特殊字符
|
|
message = bleach.clean(message, strip=True)
|
|
|
|
# 限制消息长度
|
|
return message[:200] if len(message) > 200 else message
|
|
|
|
def errorResponse(errorMsg, status_code=400):
|
|
"""
|
|
统一的错误响应处理
|
|
:param errorMsg: 错误消息
|
|
:param status_code: HTTP状态码
|
|
:return: 错误响应
|
|
"""
|
|
safe_message = sanitize_error_message(errorMsg)
|
|
|
|
if 'application/json' in request.headers.get('Accept', ''):
|
|
return jsonify({
|
|
'success': False,
|
|
'error': safe_message
|
|
}), status_code
|
|
|
|
return render_template(
|
|
'error.html',
|
|
errorMsg=safe_message,
|
|
status_code=status_code
|
|
), status_code |