Skip to content

Possible SQL injection vector through string-based query construction. #75

Description

@dim5x

Describe the bug

    • query = 'select count(1) _count from [admin] where [login] = %(login)s' % {'login': login}
    • ''' % {'login': login, 'description': description}
    • ''' % {'login': login}
    • ''' % {'login': login, 'hash': hash_sha384}
-Важно!

Никогда, ни при каких условиях, не используйте конкатенацию строк (+) или интерполяцию параметра в строке (%) для передачи переменных в SQL запрос. Такое формирование запроса, при возможности попадания в него пользовательских данных – это ворота для SQL-инъекций!

Правильный способ – использование второго аргумента метода .execute()

Возможны два варианта:

  1. C подстановкой по порядку на места знаков вопросов:
    cursor.execute("SELECT Name FROM Artist ORDER BY Name LIMIT ?", ('2'))

  2. И с использованием именованных замен:
    cursor.execute("SELECT Name from Artist ORDER BY Name LIMIT :limit", {"limit": 3})

Metadata

Metadata

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions