Меня всегда смущает одна вещь - экранирование ввода и то, защищены ли вы от таких атак, как инъекция SQL.
Скажем, у меня есть форма, которая отправляет данные с помощью HTTP POST в файл PHP. Я набираю следующее в поле ввода и отправляю форму:
"Hello", said Jimmy O'Toole.
Если вы напечатаете / отобразите ввод на странице PHP, которая получает эти данные POST, она будет выглядеть так:
\"Hello\", said Jimmy O\'Toole.
Это тот момент, когда это сбивает с толку. Если я помещу эту входную строку в (My) SQL и выполню ее, она попадет в базу данных нормально (поскольку кавычки экранированы), но остановит ли это SQL-инъекцию?
Если я возьму входную строку и вызову что-то вроде mysqli real_escape_string
, получится так:
\\"Hello\\", said Jimmy O\\'Toole.
Поэтому, когда он попадает в базу данных через (My) SQL, он заканчивается как:
\"Hello\", said Jimmy O\'Toole.
Это явно слишком много косых черт.
Так что, если вход поступает через HTTP POST как экранированный, нужно ли вам снова экранировать его, чтобы сделать его безопасным для (моего) SQL? Или я просто не вижу здесь ничего очевидного?
Заранее спасибо за любую помощь.