Всегда ли безопасно удалить косую черту из URL? - PullRequest
7 голосов
/ 03 июня 2009

Я храню URL-адреса в базе данных и хочу узнать, совпадают ли два URL-адреса.

Обычно косая черта в конце не меняет ответ, который вы получите от сервера. (т. е. http://www.google.com/ совпадает с http://www.google.com)

Могу ли я всегда слепо удалять косую черту из любого URL, не глядя ни на что?
Это безопасно?

Что я подразумеваю под «не глядя ни на что», так это то, что я удаляю косую черту из:
http://www.google.com/q?xxx=something&yyy=something/

Я знаю, что веб-сервер может теоретически возвращать совершенно разные вещи, если он этого хочет, и я знаю, что иногда переход на URL без косой черты перенаправляет на URL с косой чертой. Мое единственное намерение здесь состоит в том, чтобы определить, являются ли оба URL одинаковыми.

Безопасен ли этот метод?

Ответы [ 4 ]

19 голосов
/ 03 июня 2009

Нет, это не всегда безопасно. Веб-сервер может интерпретировать часть пути URL-адреса так, как ему нравится. Вы не можете сказать, что он будет делать (разрешать URI) без использования GET или HEAD в URL.

7 голосов
/ 03 июня 2009

Это может быть безопасно в том смысле, что вы получите один и тот же ответ с косой чертой или без нее (и я не могу гарантировать, что это правда), но они определенно могут означать разные вещи. Рассмотрим URL, который ссылается на каталог, или что-то, представленное сайтом как каталог. Используя URL

http://www.somesite.com/directory/

... дает понять, что вы запрашиваете каталог. Если вы взломали косую черту:

http://www.somesite.com/directory

... сайт примет это как запрос к файлу с именем "directory", и на мгновение запутается. Скорее всего, это будет интерпретировано как запрос на каталог, но значения не одинаковы, и вы можете не получить то, что ожидаете.

Подробнее см. в этой статье .

4 голосов
/ 03 июня 2009

Нет. Я сталкивался с ситуациями, когда, в зависимости от настроек в файле .htaccess, некоторые каталоги или «чистые URL-адреса» (например, созданные CMS) не могли быть доступны без завершающей косой черты. Это редко, и это может быть ошибкой со стороны веб-мастера, но это может случиться.

1 голос
/ 03 июня 2009

Как уже отмечали другие, это не всегда безопасно. Если это сработает для вас, я рекомендую хранить URL-адреса с косыми чертами и удалять их при сравнении. Вы получите удар по производительности, но я думаю, что это лучше, чем отправить кого-то на неправильную веб-страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...