Возможно ли двойное экранирование причинить вред БД? - PullRequest
0 голосов
/ 30 марта 2010

Если я случайно уйду от строки, может ли БД пострадать?

Для целей этого вопроса, скажем, я не использую хранимые процедуры или параметризованные запросы

Например, допустим, я получил следующий ввод:

bob's bike

И я избегаю этого:

bob\'s bike

Но мой код ужасен и снова ускользает от него:

bob\\\'s bike

Теперь, если я вставлю это в БД, значение в БД будет

bob\'s bike

Что, хотя я и не хочу, не повредит БД. Возможно ли для любого двойного входа ввести что-то вредоносное для БД, если я приму все другие необходимые меры безопасности?

Ответы [ 2 ]

1 голос
/ 30 марта 2010

Одиночное спасение одинаково вредно / безвредно, как двойное спасение с точки зрения безопасности.

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

Например, если вы запустите bob\\\'s bike через функцию unescape (), он выведет bob\'s bike, который затем будет напечатан на странице, если вы не удалите его снова. Но не убирайте слишком много раз, потому что это может убрать преднамеренные обратные слеши (и, возможно, принести больше вреда).

Имеет ли этот вопрос какое-либо отношение к функции магических кавычек в PHP случайно? Просто любопытно ...

1 голос
/ 30 марта 2010

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

Жесткое кодирование значений SQL и / или параметров в приложение никогда не следует рассматривать как «принятие необходимых мер безопасности», поскольку вы всегда будете подвергаться атакам внедрения SQL (в случае веб-приложения).

Лучше всего использовать хранимые процедуры, если вы можете, и если это не вариант, как минимум, вы должны использовать параметризованные запросы (переменные связывания - еще один термин для этого).

Но чтобы ответить на ваш вопрос, хранение bob\'s bike в базе данных не принесет никакого вреда само по себе, но позаботьтесь о том, чтобы учесть другие пункты, упомянутые выше, они жизненно важны с точки зрения безопасности.

...