Подтвердить что ты не робот

Что означает # в sql?

Кто-нибудь знает, что-то вроде OR 1# означает в контексте инъекции mysql?

4b9b3361

Ответ 1

Это версия MySQL разделителя комментариев строки. В стандартном SQL разделитель комментариев строки --.

-- This is a standard SQL comment.
# This is a MySQL comment.

Итак, в контексте SQL-инъекции, если злоумышленник знает, что вы используете MySQL, он может использовать его для внезапного прекращения действия вредоносного SQL, заставляя MySQL игнорировать все, что стоит за #, и выполнять только те вещи, которые появляются перед этим. Однако это эффективно только для однострочных операторов SQL. Вот пример:

Input:

Имя пользователя: fake' OR 1#
Пароль: pass

Результирующий SQL:

SELECT * FROM users WHERE username = 'fake' OR 1#' AND password = 'pass'

Выполняется как это, которое возвращает каждую строку:

SELECT * FROM users WHERE username = 'fake' OR 1

Ответ 2

Это начало комментария. Это означает, что все, что после этого будет пропущено парсером.