2009-06-03 100 views
6

我將URL存儲在數據庫中,我希望能夠知道兩個URL是否相同。從URL中刪除尾部斜槓總是安全的嗎?

通常,最後的斜槓不會改變您從服務器獲得的響應。 (即http://www.google.com/http://www.google.com相同)

我是否可以始終盲目地從任何URL中刪除末尾的斜槓而不查看任何內容?
安全嗎?

我的意思是「不看任何東西」是,我會從刪除斜槓:
http://www.google.com/q?xxx=something&yyy=something/

我知道web服務器可以,如果理論上回報完全不同的東西,它希望和我知道有時去一個沒有斜槓的URL會重定向到斜槓。我唯一的意圖是確定兩個URL是否相同。

此方法是否安全?

+2

雖然不一定是「資源」,但XML命名空間非常特別*關於尾部斜線或非斜線。 – 2012-01-26 23:16:10

回答

18

不,它並不總是安全的。一個Web服務器可以解釋它喜歡的URL的路徑部分。如果不使用URL上的GET或HEAD,你就無法知道它會做什麼(解析URI)。

+0

謝謝。我一直在查看數據庫,幸運的是,我確認這不是問題。提交的所有網址都被我們擁有的小書籤代碼抓取,並且正如我所懷疑的那樣,除了尾部斜線之外,不可能有2個用戶擁有相同的網址。或者至少,它還沒有發生:-)。 – 2009-06-03 04:12:51

+1

而且,IIRC中,URL規範特別指出以斜槓結尾的URL表示目錄,而不表示文檔。許多Web服務器將重定向到或返回前者的默認文檔,併爲後者返回401(我知道我的做法)。 – 2009-06-03 05:25:26

+1

URL規範討論了分層URL方案 - 像FOO://而不是像BAR那樣的那樣:等等。一些層次結構的知識就像http,ftp一樣熟知,但是你仍然無法判斷/最終是否有意義,這是服務器解釋的結果,這可能取決於操作系統,服務器軟件實現和其他方面。 – dajobe 2009-06-03 06:41:56

4

不。我遇到過這樣的情況,根據.htaccess文件中的設置,某些目錄或「乾淨URL」(例如由CMS生成的URL)無法在沒有結尾斜槓的情況下訪問。這很少見,這可能是網站管理員的錯誤,但可能會發生。

6

它可能是安全的,你會得到相同的響應有或沒有結尾的斜線(我不能保證是真的),但他們肯定意味着不同的事情。考慮一個引用目錄的URL,或者該網站作爲目錄提供的內容。使用網址

http://www.somesite.com/directory/ 

...明確表示您要查找目錄。如果你砍掉的斜線:

http://www.somesite.com/directory 

...該網站的打算以此爲一個名爲「目錄」的文件的請求,並得到所有困惑了片刻。它可能會將此解釋爲對目錄的請求,但含義並不相同,並且您可能得不到您的期望。

查看this article瞭解更多詳情。

+0

另外,在** RFC 3986 **中,參見[6.2.4。基於協議的規範化](http://tools.ietf.org/html/rfc3986#section-6.2.4)。網絡蜘蛛可能試圖確定這兩者是否相同。 – DavidRR 2014-10-15 20:51:26

0

正如其他人所指出的,它並不總是安全的。如果它能爲你工作,我的建議是將URL存儲在斜線處,並在你做比較時將它們去掉。你會受到性能影響,但我認爲這比發送錯誤的網頁更好。

+0

如果您不想在比較時進行處理,則可以將規範形式的實際URL和URL存儲起來。時空權衡。 – Chuck 2009-06-03 02:38:42