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