Когда использовать mysql реальную escape-строку - PullRequest
2 голосов
/ 16 марта 2012

Я полностью сбит с толку, я прочитал несколько постов, но все же я не уверен. Я не хочу идти по пути подготовленных заявлений, поскольку этот сайт находится только в нашей интрасети. Я прочитал следующие посты, но все же я не уверен.

  1. Когда использовать mysql_real_escape_string?
  2. Когда использовать mysql_real_escape_string ()

Мой вопрос: я должен использовать mysql-real-escape-string

  1. Когда только я получаю пользовательский ввод из формы ИЛИ
  2. По всем моим запросам? например: SELECT * FROM ......

Например, в этом сообщении говорится: You need to call this function when building SQL queries with string literals. You should not call it anywhere else.

Ответы [ 5 ]

2 голосов
/ 16 марта 2012

Ну, на самом деле я использую это на:

ЛЮБАЯ переменная, которую я собираюсь вставить в MySQL Query и которая могла бы быть изменена пользователем, либо если это прямой пользовательский ввод (через форму), либо параметр, который я ' Вы проходили через GET requests и т. д.

Вы поняли мою точку зрения ...: -)

2 голосов
/ 16 марта 2012

Что готовые операторы делают (среди прочего), так это вызывают метод, аналогичный mysql_real_escape_string ()
Если вы не используете PDO, это нормально, вы должны понимать, что вы делаете, и вы получите тот же уровень безопасности.
Единственное и простое правило: all raw data needs mysql_real_escape_string() (или подобное из других языков)
Примеры:
- Данные из пользовательского ввода
- Данные, которые вы сохранили в формате RAW в БД (ведь это лучший способ), и которые вы используете для нового SQL-отчета
- Данные из неизвестного / другого происхождения
Детали:
- не применяйте дважды (для правильного сохранения данных)

1 голос
/ 16 марта 2012

Это важно, когда вы точно не знаете, что входит в строку. Это означает, что пользовательский ввод.

Возможно, вы захотите перейти к подготовленным операторам с помощью PDO .

0 голосов
/ 16 марта 2012

Цитированное предложение в вашем вопросе верно.
Все остальные ответы неверны.

Каждый раз, когда вы собираетесь добавить строку в кавычках в запрос SQL, вы всегда должны избегать ее.
Это единственный случай, когда вам нужно использовать mysql_real_escape_string ().

PS.Я не могу поверить, что этот вопрос все еще жив со всеми его ответами.

Stackoverflow - очень странное место.

0 голосов
/ 16 марта 2012

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

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

...