Как определить, откуда приходит пользователь? - PullRequest
1 голос
/ 27 октября 2009

Есть ли надежный способ определить, откуда приходит пользователь в приложении ASP.NET? У нас есть веб-приложение, которое связано из двух разных мест. Две ссылки находятся на отдельных доменах, и они должны диктовать определенные разрешения пользователя в этом приложении. Вот что я пробовал до сих пор ...

  • Использование Request.UrlReferrer (то есть заголовок HTTP Referer ). Это всегда возвращало пустую строку. Я считаю, что это потому, что гиперссылки используют Javascript для запуска всплывающего окна. Основываясь на моих исследованиях, пользовательский агент предоставляет этот HTTP-заголовок для стандартных гиперссылок. Всплывающие окна Javascript - это отдельная история (очевидно).

  • Простая строка запроса для указания реферера. Это не совсем вариант, потому что нам нужно что-то, что не так легко обойти (более безопасный).

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

Ответы [ 3 ]

5 голосов
/ 27 октября 2009

Нет надежного способа определить, откуда приходит пользователь, и это не только ограничение ASP.NET, но и все веб-приложения в целом. Ссылка на URL может быть легко подделана, поэтому она ненадежна. Я думаю, что лучшим вариантом может быть какой-то зашифрованный параметр url или cookie, если вы предпочитаете.

Таким образом, обе страницы должны согласовать общие закрытые ключи.

  1. Page1 будет использовать ключ для шифрования своего адреса и передачи его в Page2
  2. Page2 проверит наличие этого параметра и попытается расшифровать его тем же секретным ключом, который использовался для шифрования
  3. Если это удастся, это означает, что Page2 сможет определить, кто его вызвал, если нет, данные были подделаны
1 голос
/ 27 октября 2009

Если браузер не передаст реферера или не использует строку запроса, как вы описали, узнать это невозможно.

0 голосов
/ 27 октября 2009

Другой вариант - иметь две разные целевые страницы в приложении ASP.NET. Целевые страницы могут устанавливать параметры безопасности и затем перенаправлять на общую домашнюю страницу. Это немного более безопасно, чем опция строки запроса.

Или вы можете разместить изображение размером 1x1 на ссылающихся сайтах, которые извлекаются с вашего сайта приложения ASP.NET. Реферер должен быть передан в сценарий, и вы можете затем установить cookie на компьютере пользователя, на который вы сможете ссылаться, когда они попадают на домашнюю страницу приложения.

...