Я наткнулся на очень простую функцию для очистки входных данных:
Код: Выделить всё
import re
def my_sanitize(input_string):
sanitized_string = re.sub(r"(\s+|\;|\|\')", '', input_string)
return sanitized_string
def generate_query(username):
sanitized_username = sanitize_input(username)
query = 'SELECT u.`username`, g.`name` FROM user usr join identity_group grp on u.id_group = g.id_group where u.status = \'5\' and u.username = \'%s\';' %(my_sanitize(user))
return query
input_username = "Tom1985" #is this injectable?
generated_query = generate_query(input_username)
print(f"Generated SQL Query: {generated_query}")
Для простых запросов, подобных этому, гарантирует ли такая простая проверка безопасность? Мне действительно любопытно, можно ли обойти эту конкретную проверку методом.
Я ожидал, что, несмотря на плохую практику прямого объединения строк для построения SQL-запросов и очень простого управления, это будет проще выполнить. сон(10) вместе с запросом.
Подробнее здесь: https://stackoverflow.com/questions/787 ... ql-queries