屏蔽外部URL

时间:2009-01-27 14:29:21

标签: asp.net security-by-obscurity

我需要能够在我的网站中打开外部URL,而不是向我的用户(在浏览器和源代码中)显示它。我不希望他们能够复制URL并根据自己的喜好编辑查询字符串。有没有办法在iframe或类似的东西中打开URL,并隐藏/掩盖其来源?

这是一个asp.net 2.0网站。

6 个答案:

答案 0 :(得分:3)

没有。如果您让客户机器做某事(即将浏览器指向网页),则无法保留这些信息。

您可以在Flash小部件或其他容器中呈现该页面服务器端,但您无法在客户端计算机上执行此操作。

答案 1 :(得分:3)

你能做到以下几点:

  1. 接受用户的参数。
  2. 使用此网页或后端流程将PDF下载到临时商店。
  3. 然后将其传输到客户端,以便他们不知道生成PDF的URL? (或直接直接流式传输,暂不下载。)
  4. 这样用户永远不会知道其他网站,而且应该更加安全。

    这也可能使用一些验证/身份验证,因此用户无法更改传递的参数以检索其他用户的PDF。

答案 2 :(得分:1)

最好的选择:您可以使用AJAX制作服务器端XMLHTTP请求,获取响应并反馈到您的页面。

答案 3 :(得分:1)

您可以通过以下方式执行服务器端:

  1. 打开网络连接 你想要的网站
  2. 从HTML / Get请求中获取HTML URL
  3. 将其插入服务器端的页面
  4. 这可能会大大减慢您的页面加载速度,并且可能会出现法律问题。

答案 4 :(得分:1)

我前一段时间遇到过类似的问题,并按照这些方式做了一些事情(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之后,希望你的网络应用程序能够抓住服务器端,那么这是一个很好的方法。

答案 5 :(得分:0)

您可以通过执行以下操作来创建一次性网址:

  1. 将GUID存储在数据库中
  2. 允许客户端通过超链接或其他方式请求GUID。 GUID在URL中用作伪页面;例如:http://www.company.com/foo/abc-123-efg-456.aspx
  3. 使用URL重写捕获并检查对目录“foo”的所有请求并重定向到您的处理程序。
  4. 确认GUID有效,然后在数据库中将其标记为“已过期”
  5. 将相应的数据(PDF?)作为对请求的响应发送给客户端。
  6. 对同一网址的任何后续请求都会失败。