Использование HTML Purifier для остановки ссылок на собственный сайт

StackOverflow https://stackoverflow.com/questions/1699151

Вопрос

Я использовал Очиститель HTML чтобы отсеять любые подозрительные материалы, поступающие из моего общедоступного редактора WYSIWYG.Входящий HTML-код также отображается в общедоступной части веб-сайта.

У меня разрешены ссылки, и я также автоматически связываю URL-адреса в виде обычного текста (используя очиститель).

Есть ли способ разрешить внешние ссылки, но запретить ссылки на тот же домен?Например, мой домен - это www.example.com

http://www.google.com будут связаны.

http://www.example.com/logout/ не будут связаны.

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

Спасибо

Это было полезно?

Решение

Ваша форма входа / выхода всегда должна быть доступна только для публикации.

Не беспокойтесь о значении проверки, но это довольно важная проблема безопасности - любые транзакции, которые изменяют состояние веб-сервера, должны быть запросами POST.Вы НИКОГДА не должны позволять http://example.com/object?action=delete, или любой его вариант.PHP поощряет плохую практику в этом вопросе, но вы ВСЕГДА должны использовать тот или иной вариант и НИКОГДА НЕ разрешать оба.

Если ваши пользователи могут записывать формы в ваш редактор WYSIWYG, у вас гораздо большие проблемы, чем это.

Чтобы ответить на ваш первоначальный вопрос, чтобы отключить внутренние ссылки, используйте URI.HostBlacklist и обязательно установите URI.MakeAbsolute:

http://htmlpurifier.org/live/configdoc/plain.html#URI.HostBlacklist

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top