| import re | |
| def is_valid(query: str) -> bool: | |
| """ | |
| Validates the user's query. | |
| """ | |
| # Check for query length | |
| if len(query) > 500: | |
| return False | |
| # Check for SQL injection patterns | |
| sql_injection_patterns = [ | |
| r"(\s*(--|#|;))", | |
| r"(\s*(union|select|insert|update|delete|drop|alter)\s+)", | |
| ] | |
| for pattern in sql_injection_patterns: | |
| if re.search(pattern, query, re.IGNORECASE): | |
| return False | |
| return True | |
| if __name__ == '__main__': | |
| # Example usage | |
| valid_query = "What are the computer science courses?" | |
| invalid_query_long = "a" * 501 | |
| invalid_query_sql = "SELECT * FROM students;" | |
| print(f"'{valid_query}' is valid: {is_valid(valid_query)}") | |
| print(f"'long query' is valid: {is_valid(invalid_query_long)}") | |
| print(f"'{invalid_query_sql}' is valid: {is_valid(invalid_query_sql)}") | |