Каких символов нужно оставить для предотвращения (Моих) Внедрений SQL?

Ваш пра-пра-пра-пра-прадед должен обновить до SQL Server 2008 и использовать тип данных DateTime2 , который поддерживает даты в диапазоне: от 0001-01-01 до 9999-12-31.

15
задан flybywire 6 July 2009 в 14:15
поделиться

3 ответа

На странице руководства MySQL для строк указано:

  • \ 0 Символ ASCII NUL (0x00).
  • \ ' Один символ кавычки (« '»).
  • \ " Символ двойной кавычки (« »»).
  • \ b Символ возврата.
  • \ n Символ новой строки (перевода строки).
  • \ r Символ возврата каретки.
  • \ t Знак табуляции.
  • \ Z ASCII 26 (Control-Z). См. Примечание после таблицы.
  • \\ Символ обратной косой черты (« \ »).
  • \% Символ «% ». См. Примечание после таблицы.
  • \ _ Символ « _ ». См. Примечание после таблицы.
16
ответ дан 30 November 2019 в 23:57
поделиться

Внесение в черный список (выявление плохих символов) никогда не поможет, если у вас есть другие варианты.

Вам нужно использовать сочетание белого списка и, что более важно, подходов с привязанными параметрами .

Хотя этот конкретный ответ фокусируется на PHP, он по-прежнему очень помогает и поможет объяснить, что простое выполнение строки через фильтр символов во многих случаях не работает. Пожалуйста, см. Защищают ли htmlspecialchars и mysql_real_escape_string мой PHP-код от внедрения?

4
ответ дан 30 November 2019 в 23:57
поделиться

Предположение относительно символа возврата: представьте, что я отправляю вам электронное письмо «Привет, вот запрос на обновление вашей БД, как вы хотели» и прикрепленный текстовый файл с

INSERT INTO students VALUES ("Bobby Tables",12,"abc",3.6);

. убедитесь, что все в порядке, и просто передайте файл в MySQL. Однако вы не знали, что я поставил

DROP TABLE students;\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b

перед INSERT STATEMENT, которого вы не видели, потому что при выводе на консоль backspaces перезаписали его. Бамм!

Только предположение.

Edit (не удержался):

alt text

47
ответ дан 30 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: