В sql-запросе есть данные мусора, но они все еще выполняются, хотя и не влияют на результаты. Почему?

0

Я использую mysql-сервер для sql.
Select * from products some_garbage_value; а также

Select * from products;

получая такое же значение. Зачем?

Ввод чего-либо в место some_garbage_value все равно приведет к такому же результату запроса.

Я создал форму для ввода запроса, и эта форма обрабатывается сервлетом и после создания соединения я получаю результат запроса на этом сервлета.

Это плохо для моей формы, если да, тогда скажите мне, как избавиться от этой ошибки? Это ошибка? Это может быть случай внедрения SQL?

  • 2
    если это some_garbage_value похоже на «где 1 = 1», то оно вернет только все строки. дайте мне знать примерное значение "some_garbage_value"
  • 0
    Примером значения @Gaj может быть что угодно, например: gaj, stack, overflow, divyam, jain, abc123 и т. Д.
Теги:
servlets
jdbc
sql-injection

1 ответ

2
Лучший ответ

В

Select * from products some_garbage_value;

some_garbage_value не мусор, это псевдоним. Технически это означает, что для области запроса вы "переименовали" это появление таблицы products в some_garbage_value. Это может быть очень полезно, если вам нужно устранить неоднозначность между двумя вхождениями одной и той же таблицы (например, в самосоединение) или сделать ваш запрос более понятным или понятным (или просто короче).

Это эквивалентно

Select * from products as some_garbage_value;

См. Также ссылку MySQL для select:

Предложение FROM table_references указывает таблицу или таблицы, из которых извлекаются строки. Если вы называете несколько таблиц, вы выполняете соединение. Информацию о синтаксисе соединения см. В разделе 13.2.9.2, "JOIN Syntax". Для каждой указанной таблицы вы можете указать псевдоним.

tbl_name [[AS] alias] [index_hint]

Это не будет работать с каким-либо значением: это должен быть синтаксически правильный идентификатор.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню