Есть ли причина, по которой мне нужно использовать полоски для данных, отправленных пользователем?

Для чего люди используют стрипслеши и обычно ли они используются в сочетании с аддслэшами? Почему я должен удалять или добавлять косую черту к строке, отправленной пользователем?


person locoboy    schedule 19.06.2011    source источник
comment
потому что вы, вероятно, избежали его, когда получили его от пользователя   -  person Ibu    schedule 19.06.2011
comment
Вы не должны. Это обходной путь для отмены обходного пути magic_quotes.   -  person mario    schedule 19.06.2011


Ответы (1)


Вы должны всегда дезинфицировать ввод пользователя. Но не с addslashes()... Если вы хотите составить запрос с пользовательским вводом, используйте соответствующий механизм экранирования базы данных (загляните в mysql_real_escape_string() и подготовленные операторы PDO).

Причина дезинфекции пользовательского ввода — безопасность. Прочтите об внедрении SQL и межсайтовый скриптинг – две наиболее распространенные проблемы безопасности, возникающие из-за непроверенного ввода.

person rid    schedule 19.06.2011
comment
Итак, как правильно дезинфицировать операторы с помощью косых черт и почему мне нужно удалять косые черты? - person locoboy; 19.06.2011
comment
stripslashes() не очищает операторы... вам не нужно использовать stripslashes(), если у вас нет строки, содержащей последовательности \', и вы хотите удалить обратную косую черту. - person rid; 19.06.2011
comment
Я понимаю. Итак, когда я вставляю что-то в базу данных, я дезинфицирую с помощью mysql_real_escape_string, а затем, когда я извлекаю и отображаю, я использую полоски? - person locoboy; 19.06.2011
comment
mysql_real_escape_string() гарантирует, что строка будет правильно передана в запрос, поэтому не будет лишних косых черт. Вам не нужно использовать stripslashes() при возврате строки. Однако используйте htmlspecialhars() при отображении пользователю любого текста, который вы не составляете себя (например, полученные из базы данных или от других пользователей). - person rid; 19.06.2011
comment
@Cfarm: нет. косые черты НЕ будут храниться в базе данных. В этом весь смысл эскейп-символов. Как только они проходят через что-то, что их понимает, один уровень бегства снимается. - person Marc B; 19.06.2011