Маскировка внешнего URL - PullRequest
       24

Маскировка внешнего URL

1 голос
/ 27 января 2009

Мне нужно иметь возможность открыть внешний URL-адрес на моем веб-сайте, не раскрывая его своим пользователям (как в браузере, так и в источнике). Я не хочу, чтобы они могли копировать URL и редактировать строку запроса по своему вкусу. Есть ли способ открыть URL в iframe или что-то в этом роде и скрыть / скрыть его источник?

Это веб-сайт asp.net 2.0.

Ответы [ 6 ]

3 голосов
/ 27 января 2009

Не могли бы вы сделать следующее:

  1. Принять параметры от пользователя.
  2. У вас есть веб-страница или бэкэнд-процесс, который использует его для загрузки PDF-файла во временное хранилище.
  3. Затем передайте это клиенту, чтобы они не знали об URL, где генерируется PDF? (или просто потоковая передача напрямую, без временной загрузки).

Таким образом, пользователи никогда не узнают о другом сайте, и он должен быть намного безопаснее.

Также может использоваться некоторая проверка / аутентификация, поэтому пользователи не могут изменять параметры, передаваемые для получения PDF-файлов других пользователей.

3 голосов
/ 27 января 2009

Нет. Если у вас есть клиентская машина, которая что-то делает (т. Е. Указывает их браузер на веб-страницу), вы не можете скрыть эту информацию от них.

Вы можете отобразить эту страницу на стороне сервера во флэш-виджете или в другом контейнере, но вы не можете сделать это на клиентском компьютере.

1 голос
/ 27 января 2009

Недавно у меня была похожая проблема, и я сделал что-то подобное (C # .NET 2.0);

    public void StreamURLContents(string URL)
    {
        WebRequest req = WebRequest.Create(URL);

        using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
        using (Stream dataStream = resp.GetResponseStream())
        using (StreamReader reader = new StreamReader(dataStream))
        {
            string currentLine = reader.ReadLine();
            while (currentLine != null)
            {
                Response.Write(currentLine);
                currentLine = reader.ReadLine();
            }
        }
    }

Вам придется адаптировать написание HTML-кода, очевидно, для вашего конкретного приложения, и вы сломаете все относительные ссылки на целевом сайте (URL-адреса изображений, CSS-ссылки и т. Д.), Но если вы только после простого текста HTML и того, чтобы ваше веб-приложение получало его на стороне сервера, тогда это хороший способ.

1 голос
/ 27 января 2009

Вы могли бы сделать это на стороне сервера:

  1. Открытие сетевого подключения к сайт, который вы хотите
  2. Получение HTML из HTML / Получить запрос на URL
  3. Вставка в вашу страницу на стороне сервера

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

1 голос
/ 27 января 2009

Лучшая ставка: Вы можете сделать запрос XMLHTTP на стороне сервера, получить ответ и вернуться на свою страницу, используя AJAX.

0 голосов
/ 28 января 2009

Вы можете создать одноразовый URL, выполнив следующие действия:

  1. Хранить GUID в базе данных
  2. Разрешить клиенту запрашивать GUID по гиперссылке или другим способом. GUID используется в URL как поддельная страница; пример: http://www.company.com/foo/abc-123-efg-456.aspx
  3. Используйте перезапись URL-адресов для захвата и проверки всех запросов в каталог "foo" и перенаправления на ваш обработчик.
  4. Подтвердите, что GUID действителен, затем пометьте его как «просроченный» в базе данных
  5. Отправьте соответствующие данные (PDF?) Клиенту как ответ на запрос.
  6. Любые последующие запросы на тот же URL не выполняются.
...