2010-03-30 3 views
0

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

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

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

bob's bike

И я убегаю что:

bob\'s bike

Но мой код ужасен, и убегает снова:

bob\\\'s bike

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

bob\'s bike

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

ответ

1

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

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

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

Имеет ли этот вопрос какое-либо отношение к возможностям магических котировок PHP? Просто любопытно ...

1

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

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

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

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