PHP
Как предотвратить ввод пользователем невалидных ссылок?
Не сайте есть форма, в которой пользователь может оставлять комментарии в формате HTML, в том числе, пользователь в своём комментарии может отправить на сервер ссылки и объекты с атрибутами href и src. Но проблема в том, что он в эти атрибуты может вписать всё, что угодно, и если ссылка будет содержать неразрешённые символы, страница с таким комментарием будет невалидной.
А в чём проблема? Пишешь серверный скрипт, который перед тем, как записать комментарий в базу, проверяет содержимое всех атрибутов href и src. И, заодно, вырезающий все теги <script> и <iframe>.
В простейшем случае проверяется просто формат ссылок, в более продвинутом можно даже попытаться загрузить контент по указанному адресу cURL'ом и проверить на вредоносность.
P.S. Разрешать вводить HTML в комментариях - плохая идея. Лучше уж BBCode, ограничивающие полёт креатива и не позволяющие писать вредоносный код.
В простейшем случае проверяется просто формат ссылок, в более продвинутом можно даже попытаться загрузить контент по указанному адресу cURL'ом и проверить на вредоносность.
P.S. Разрешать вводить HTML в комментариях - плохая идея. Лучше уж BBCode, ограничивающие полёт креатива и не позволяющие писать вредоносный код.
Varazdat Xalapyan
Проблема в незнании алгоритма. Каким именно условиям должна соответствовать корректная ссылка?
Varazdat Xalapyan
BB эту проблему не решают, так как всё равно href может быть введён любым.
Вы не сможете на 100% предотвратить это. Есть специальные инструменты, которые позволяют послать ЛЮБОЙ запрос, даже такой, на который вы не рассчитывали.
Эта форма в браузере у пользователя посылает введенные данные в какой-то обработчик. Вы в этом обработчике берете и каждое полученное откуда-то значение перепроверяете на соответствие вашим ожиданиям, даже если вы в исходной html-форме наворотили там проверок.
Имхо мое мнение, что все эти проверки на стороне пользователя в HTML-коде вообще не нужны, за исключением самых базовых, типа наличие необходимых значений.
Потому что вы в любом случае будете проверять то, что там пришло из "дикого" интернета.
Эта форма в браузере у пользователя посылает введенные данные в какой-то обработчик. Вы в этом обработчике берете и каждое полученное откуда-то значение перепроверяете на соответствие вашим ожиданиям, даже если вы в исходной html-форме наворотили там проверок.
Имхо мое мнение, что все эти проверки на стороне пользователя в HTML-коде вообще не нужны, за исключением самых базовых, типа наличие необходимых значений.
Потому что вы в любом случае будете проверять то, что там пришло из "дикого" интернета.
Проверь ссылку регэкспом, а потом curl
используй BBCode или HTML Purifier
Регулярные выражения в руки. На js есть куча готовых решений. И да, комментарии в html - баян. Ты еще скажи что не сделал экранирование вводимых данных в поле комментариев, или наоборот, ждешь пока тебя похакают
Похожие вопросы
- PHP MYSQL после ввода запроса , отображается пустая строка перед 1 кой, немогу понять Помогите пожалуйста
- создаю редактор профиля для пользователя для сайта.. проблема..
- Как сделать редирект пользователя в зависимости от страны?
- При удалении сообщения одним пользователем, оно удаляется и у другого.
- Как хранить информацию о пользователях в бд?
- Как вывести имя и фамилию пользователя из куки? (PHP setcookie)
- Используется ли ссылки в проф программировании (PHP)
- Делают ли обычные ссылки с помощью get параметров? Как часто и В каких случаях такое применятся.
- Множественный клик по ссылке на низком интернет соединении. Реакция сервера?
- Задача: Web-интерфейс БД зарегистрированных пользователей сайта