Commit
·
96e6d20
1
Parent(s):
e776b5f
Add input validation for chat endpoint - length limits and type checking
Browse files- flask_api_standalone.py +25 -1
flask_api_standalone.py
CHANGED
|
@@ -150,12 +150,36 @@ def chat():
|
|
| 150 |
}), 400
|
| 151 |
|
| 152 |
message = data['message']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
history = data.get('history', [])
|
| 154 |
session_id = data.get('session_id')
|
| 155 |
user_id = data.get('user_id', 'anonymous')
|
| 156 |
|
| 157 |
logger.info(f"Chat request - User: {user_id}, Session: {session_id}")
|
| 158 |
-
logger.info(f"Message: {message[:100]}...")
|
| 159 |
|
| 160 |
if not orchestrator_available or orchestrator is None:
|
| 161 |
return jsonify({
|
|
|
|
| 150 |
}), 400
|
| 151 |
|
| 152 |
message = data['message']
|
| 153 |
+
|
| 154 |
+
# Input validation
|
| 155 |
+
if not isinstance(message, str):
|
| 156 |
+
return jsonify({
|
| 157 |
+
'success': False,
|
| 158 |
+
'error': 'Message must be a string'
|
| 159 |
+
}), 400
|
| 160 |
+
|
| 161 |
+
# Strip whitespace and validate
|
| 162 |
+
message = message.strip()
|
| 163 |
+
if not message:
|
| 164 |
+
return jsonify({
|
| 165 |
+
'success': False,
|
| 166 |
+
'error': 'Message cannot be empty'
|
| 167 |
+
}), 400
|
| 168 |
+
|
| 169 |
+
# Length limit (prevent abuse)
|
| 170 |
+
MAX_MESSAGE_LENGTH = 10000 # 10KB limit
|
| 171 |
+
if len(message) > MAX_MESSAGE_LENGTH:
|
| 172 |
+
return jsonify({
|
| 173 |
+
'success': False,
|
| 174 |
+
'error': f'Message too long. Maximum length is {MAX_MESSAGE_LENGTH} characters'
|
| 175 |
+
}), 400
|
| 176 |
+
|
| 177 |
history = data.get('history', [])
|
| 178 |
session_id = data.get('session_id')
|
| 179 |
user_id = data.get('user_id', 'anonymous')
|
| 180 |
|
| 181 |
logger.info(f"Chat request - User: {user_id}, Session: {session_id}")
|
| 182 |
+
logger.info(f"Message length: {len(message)} chars, preview: {message[:100]}...")
|
| 183 |
|
| 184 |
if not orchestrator_available or orchestrator is None:
|
| 185 |
return jsonify({
|