2012-11-20 58 views
0

爲了實現內容傳輸的安全性的單層,我尋找到通過一個.htaccess重寫規則模糊的資源URL的可能性:用mod_rewrite一級的目標網址的默默無聞的

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

它當然會被實現爲:

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

因爲這不是一個301重定向,而是類似於我們的很多框架,我們今天使用的路由方案會是安全地說,這個重寫規則充分地混淆了實際的URL此資源所在的位置,或:

  1. 可以在目標網址仍然可以通過一些HTTP頭嗅探工具
  2. 可能在Web瀏覽器能夠顯示「下載URL」

我要去預答案被發現我自己的問題是,因爲「內部代理」發生在服務器端,而不是客戶端,所以如果我理解正確的話,這兩個問題都會說「否」,即:http://httpd.apache.org/docs/current/mod/mod_rewrite.html。我只是想確認一下,當Apache去提供目標URL時,它也不會將信息傳遞給用戶代理,而是將它重寫爲原始請求的URL。

回答

0

這取決於您如何指定重定向目標。

如果您的http://example.com/在同一臺服務器上運行,則會有一個內部重定向對客戶端不可見。從manual

絕對URL

如果指定一個絕對URL,mod_rewrite的檢查,看是否主機名當前主機相匹配。如果是這樣,則會刪除方案和主機名,並將生成的路徑視爲URL路徑。否則,將爲給定的URL執行外部重定向。要強制外部重定向回到當前主機,請參見下面的[R]標誌。

如果絕對URL指向遠程域,將執行標頭重定向。一個標題重定向客戶端可見,並會顯示敏感的位置。

,以確保沒有外部重定向發生,指定像

RewriteRule obscure-alias\.js sensitive.js 

注意的是,敏感的JS文件的URL仍可以猜到相對URL。

爲了找出在報頭重定向請求的結果是否,登錄到終端(例如,在Linux服務器上),並做

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

如果第一HTTP/....線(可能有多於一個的)是以3xx開頭,如

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

您正在查看標頭重定向。

+0

如果我還是想做到這一點使用遠程域(例如CDN託管),也像這樣成爲與mod_rewrite的結合的選項? http://stackoverflow.com/questions/1173571/mod-rewrite-not-working-as-internal-proxy – rdev5

+0

@Matt你必須代理它。 –

+0

是的,我現在看到:http://httpd.apache.org/docs/2.4/rewrite/proxy.html – rdev5

相關問題