Как следует обрабатывать неправильно закодированные URL-адреса?
Совсем недавно заметил, что некоторые сайты ссылаются на URL-адрес с неправильной процентной кодировкой, на что мой сервер (LAMP) отвечает 404 Не найдено.
Например, для моего URL-адреса, такого как этот:
http://www.site.com/page.php?param=value
Они ссылаются на него следующим образом:
http://www.site.com/page.php%3Fparam%3Dvalue
Итак:
- Кто не прав? Мой сервер за непонимание? или сайт-ссылка за неправильное указание URL-адреса?
- Можно ли что-то сделать, чтобы настроить Apache для понимания неправильно закодированный разделитель строки запроса (
%3F
вместо?
)? - Если нет, было бы безопасно настроить перенаправления, переведя
%3F
в?
?
1 answers
Во-первых, как сказал @LazyOne, URL-адреса сторонних производителей генерируются неправильно, поэтому ожидается, что сервер выйдет из строя - так как он выходит из строя прямо сейчас, как вы описали.
Обратите внимание, что допустимый HTML и допустимые URL-адреса - это разные вещи. Вы должны экранировать сущности для содержимого HTML, но это неверно, когда записывает ссылки, адреса изображений и вызывает внешние файлы.
Прежде чем решить, бежать или нет, спросите себя: будет ли это прочитано пользователем или браузером? Ответ подскажет вам, какой тип кодировки вам следует использовать.