0

为了实现单层内容交付安全性,我正在研究通过 .htaccess RewriteRule 隐藏资源 URL 的可能性:

RewriteEngine on
RewriteBase /js/
RewriteRule obscure-alias\.js http://example.com/sensitive.js

它当然会被实现为:

<script type="text/javascript" src="obscure-alias.js"></script>

因为这不是 301 重定向,而是类似于我们今天使用的许多框架的路由场景,所以可以肯定地说,这个 RewriteRule 充分混淆了这个资源所在的实际 URL,或者:

  1. 仍然可以通过一些 HTTP 标头嗅探实用程序找到目标 URL
  2. 网络浏览器是否能够显示“下载 URL”

我将通过对两者都说不来预先回答我自己的问题,因为如果我理解正确的话,“内部代理”发生在服务器端而不是客户端:http://httpd.apache。 org/docs/current/mod/mod_rewrite.html。我只是想确认,当 Apache 提供目标 URL 时,它也没有将信息传递给用户代理,它重写了原始请求的 URL 是什么。

4

2 回答 2

0

这取决于您如何指定重定向目标。

如果您http://example.com/在同一台服务器上运行,则会有一个对客户端不可见的内部重定向。从手册

绝对网址

如果指定了绝对 URL,mod_rewrite 会检查主机名是否与当前主机匹配。如果是这样,则方案和主机名将被删除,并且生成的路径将被视为 URL 路径。否则,将对给定 URL 执行外部重定向。要强制将外部重定向回当前主机,请参见下面的 [R] 标志。

如果绝对 URL 指向远程域,则将执行标头重定向。客户端可以看到标头重定向,并将显示敏感位置。

为确保不会发生外部重定向,请指定一个相对 URL,例如

RewriteRule obscure-alias\.js sensitive.js

请注意,仍然可以猜到敏感 JS 文件的 URL。

要确定请求是否导致标头重定向,请登录到终端(例如,在 Linux 服务器上)并执行

wget --server-response http://www.example.com

如果第一HTTP/....行(可能不止一个)是以 a 开头的3xx,比如

HTTP request sent, awaiting response... 
  HTTP/1.1 302 Moved Temporarily

您正在查看标头重定向。

于 2012-11-20T08:51:05.317 回答
0

可以使用代理吞吐量。

http://httpd.apache.org/docs/2.4/rewrite/proxy.html

这里也提到了:mod_rewrite not working as internal proxy

于 2012-11-20T09:08:51.477 回答