File size: 877 Bytes
2322128
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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)}")