JatsTheAIGen commited on
Commit
96e6d20
·
1 Parent(s): e776b5f

Add input validation for chat endpoint - length limits and type checking

Browse files
Files changed (1) hide show
  1. 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({