Python: базовый пример очистки ввода для SQL-запросовPython

Программы на Python
Anonymous
Python: базовый пример очистки ввода для SQL-запросов

Сообщение Anonymous »

Я изучаю информатику и сейчас учусь писать безопасный код.
Я наткнулся на очень простую функцию для очистки входных данных:

Код: Выделить всё

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-инъекций, является использование прямой конкатенации строк для построения SQL-запросов, а не использование параметризованных запросов, но на самом деле в этом конкретном случае случае мне не удалось провести какие-либо инъекции.
Для простых запросов, подобных этому, гарантирует ли такая простая проверка безопасность? Мне действительно любопытно, можно ли обойти эту конкретную проверку методом.
Я ожидал, что, несмотря на плохую практику прямого объединения строк для построения SQL-запросов и очень простого управления, это будет проще выполнить. сон(10) вместе с запросом.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ql-queries

Вернуться в «Python»