【问题标题】:What is a practice approach to hide the private URL?隐藏私有 URL 的实践方法是什么?
【发布时间】:2011-10-23 16:08:59
【问题描述】:

我还没有找到解决这个问题的好方法,希望有人已经做过类似的事情。

我编写了一个 javascript 程序来加载存储在我的服务器上的图像列表,但我不希望用户知道我的图像的目录。

var img1 = new Image();
img1.src = "my_img_directory/img1.png";

var img2 = new Image();
img1.src = "my_img_directory/img2.png";

在此示例中,用户将知道我在网络服务器上存储 img1 和 img2 的位置。有没有办法阻止他们看到 URL?

我正在考虑用一些随机字符串替换 URL。例如,我可以这样做:

var img1 = new Image();
img1.src = decode_URL("auiopjlnad103k");

但是我仍然必须用绝对路径映射那个随机字符串。用户可以查看 decode_URL 如何将随机字符串转换为绝对 URL。

如果在客户端解密随机字符串,用户将计算出私钥并能够计算出 URL。

看来我已经没有主意了。这是仅在客户端无法完成的事情吗?任何提示或帮助将不胜感激!

谢谢。

【问题讨论】:

  • 我建议做这个服务器端。真的没有办法阻止用户找出实际图像的 URL 是什么。
  • 您有什么顾虑?如果您试图阻止 Google 机器人或其他搜索引擎为您的图片编制索引,那么您只需创建一个 robots.txt 文件并将您的图片放入其中。这个网址显示更多。 google.com/support/webmasters/bin/answer.py?answer=35308
  • 我也在焦急地等待这个问题的答案:为什么?

标签: javascript security


【解决方案1】:

没有什么能阻止人们在 Firebug 等工具中简单地嗅探传入的 HTML 并查看与您的服务器的整个对话。

另一种方法是让代理通过发送矿标头并从服务器端代码流式传输图像内容来发送图像。然后图像看起来像是来自imageserver.php?id=349857348975 或其他什么。

您会在 HTML 中使用:<img src="imageserver.php?id=349857348975" />

【讨论】:

  • ……但用户仍然可以提出相同的请求并获取图像,这可能是 OP 试图阻止的。
  • 这是真的。规则是:如果您不希望用户能够保存它,请不要将其放到互联网上。
【解决方案2】:

确实没有理由隐藏服务器上的目录路径。如果您使用图像的直接 URL,则无法隐藏这一事实。任何运行任何类型的网络嗅探器或浏览器开发工具(Firebug、Chrome 检查器等)或任何类型的网络代理(如 Fiddler)的人都可以看到浏览器正在获取的内容:路径、文件名等等。我会说真的不值得隐藏正在发出的请求。

可以将服务器配置为不允许列出目录,这样没有人可以看到该目录中可能还有什么。

正如 Diodeus 所提到的,您可以通过让服务器端脚本提供图像来隐藏任何路径概念。但是,我不知道你得到了什么。请求中必须包含识别信息,这些信息将获取与在受适当保护的服务器上显示的路径/文件名信息实际上没有什么不同的图像。

如果您只希望“经过身份验证的”用户能够访问此信息,那么您需要在授予对图像的访问权限之前通过检查身份验证凭据(可能是登录 cookie)在服务器端强制执行此操作。无论如何,这主要是服务器端的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 2019-03-09
    • 2010-12-24
    • 2015-01-20
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多