RAG / guards /input.py
Samuel Oberhofer
feat: Implement retriever and guardrail modules
2322128
raw
history blame
877 Bytes
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)}")