Как следует обрабатывать неправильно закодированные 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 в ??
Author: Lèse majesté, 2011-07-25

1 answers

Во-первых, как сказал @LazyOne, URL-адреса сторонних производителей генерируются неправильно, поэтому ожидается, что сервер выйдет из строя - так как он выходит из строя прямо сейчас, как вы описали.

Обратите внимание, что допустимый HTML и допустимые URL-адреса - это разные вещи. Вы должны экранировать сущности для содержимого HTML, но это неверно, когда записывает ссылки, адреса изображений и вызывает внешние файлы.

Прежде чем решить, бежать или нет, спросите себя: будет ли это прочитано пользователем или браузером? Ответ подскажет вам, какой тип кодировки вам следует использовать.

 2
Author: Davis Peixoto, 2011-09-27 02:54:52