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 (который будет учитывать кодировку языка, которую вы используете...)

Другие вопросы по тегам