"SELECT * FROM foo WHERE id = '%s'" % var_name
qs2 = "SELECT * FROM foo WHERE id = '{}'".format(var_name)
qs3 = "SELECT * FROM foo WHERE id = '{0}'".format(var_name)
qs4 = f"SELECT * FROM foo WHERE id = '{var_name}'"
qd1 = "DELETE FROM foo WHERE id = '%s'" % var_name
qd2 = "DELETE FROM foo WHERE id = '{}'".format(var_name)
qd3 = "DELETE FROM foo WHERE id = '{0}'".format(var_name)
qd4 = f"DELETE FROM foo WHERE id = '{var_name}'"
qu1 = "UPDATE foo SET value = 'b' WHERE id = '%s'" % var_name
qu2 = "UPDATE foo SET value = 'b' WHERE id = '{}'".format(var_name)
qu3 = "UPDATE foo SET value = 'b' WHERE id = '{0}'".format(var_name)
qu4 = f"UPDATE foo SET value = 'b' WHERE id = '{var_name}'"
assert 1 == 1
Находит только assert в самом низу (B101), а sql инъекции не находит (B608)
Запускаю как
bandit my_code.py
Несмотря на это, пробежавшись по файлу с регексом от бандита вручную
https://github.com/PyCQA/bandit/blob/master/bandit/plugins/injection_sql.py#L61
У меня нашлись все эти строки
Кто знает, в чём может быть трабл?
P.S. запуск с разными флагами, в т.ч. с кодами ошибок, не помогает.
что это вообще?
Это потому что python 3.8 На 3.7 всё ок. Вопрос закрыт
Обсуждают сегодня