PHP автоматический побег строки на пост
Я создаю аккуратный веб-сайт для моего друга, и я заметил, что сайт автоматически избегал ввода из текстовых полей, текстовых полей и т. Д.
Значит ли это, что мне не нужно добавлять mysql_real_escape_string
когда я хочу вставить данные в базу данных MySQL, и я могу просто оставить все как есть?
Или это потенциальный риск для безопасности?
2 ответа
На самом деле не имеет значения, где происходило экранирование, будь то когда отправлялась форма или когда выполнялся фактический запрос к базе данных. mysql_*
функции находятся в процессе устаревания и больше не должны работать.
Если вы хотите аккуратный, безопасный сайт. Научитесь использовать либо mysql_i
(i
для "улучшенного") или еще лучше, независимый от базы данных интерфейс, называемый интерфейсом PDO. И то, и другое даст вам аккуратность, которая вам нужна, и дополнительный импульс безопасности.
Вы можете получить учебник для PDO здесь
и для Mysqli здесь
Как отмечают комментаторы, mysql() api не является предпочтительным. Используйте MySQLi - и используйте подготовленные операторы. Прелесть этого - независимо от того, что вы вставляете - не может изменить исходный SQL (изменение SQL без ведома программиста является реальной проблемой безопасности).
К тому же, избежание ввода на всех постах может быть раздражающим в целом. Я обычно отключаю это, используя отключение директивы gpc_magic_quotes в php.ini или используя stripslashes, если gpc_magic_quotes включен. Но это мое личное предпочтение.
Пожалуйста, попробуйте обновить код до синтаксиса MySQLi. Если это абсолютно невозможно, используйте stripslashes, а затем используйте mysql_real_escape_string (который будет учитывать кодировку языка, которую вы используете...)