2010-07-04 49 views
4

應我的顧慮是什麼,如果我我們要進行的處理登錄以下方式提出申請:安全:強制通過URL強制GET請求?

http://api.myApp.example/printSomething/username/password/ 

它是如何不安全的比較是基於上公佈的用戶資料正常登錄頁面(用戶名+密碼)?有區別嗎?

感謝

+0

是否有你需要通過GET而不是POST向它發送一個特定的原因是什麼?的 – xil3 2010-07-04 15:52:21

+0

可能重複[是否安全通過登錄憑據作爲一個HTTPS URL純文本?](http://stackoverflow.com/questions/3150672/is-it-secure-to-pass-login-credentials-as-純文本在一個HTTPS的網址) – Piskvor 2010-07-04 16:00:50

回答

2

其實,這是沒有太大的差別,你只是讓攻擊者周圍一步比較容易混亂。

但是:網址經常保存在瀏覽器歷史記錄,日誌等中,這意味着任何訪問瀏覽器(或訪問該URL)的人都可以看到用戶名和明文密碼。

更新:

關於這個問題的標題,並澄清我的回答:

兩個GETPOST請求可以很容易地利用做蠻力攻擊。使用GET,您可以使攻擊者更容易手動執行此操作,但通常這些都是自動攻擊,即執行這些請求的應用程序,因此所使用的HTTP方法完全不相關。

永遠也不能選擇過另一種HTTP方法防止香檳力攻擊。
你必須在服務器端做這樣的事情,例如,限制一個IP每分鐘訪問的次數。

+1

HTTP請求可以(也應該)被加密,因此閱讀它可能比獲取瀏覽器歷史記錄(或查看用戶的肩膀)困難得多。 – Amnon 2010-07-04 16:08:38

+1

@Amnon:雖然這是絕對正確的,但我更側重於這個問題的強力方面。我已經更新了我的答案以澄清這一點。 – 2010-07-04 16:11:49

11

根本就沒有做到這一點。使用POST方法而不是那個。 你絕不應該允許URL中的敏感信息。

+6

賓果。他們出現在日誌,瀏覽器歷史等。 – ceejayoz 2010-07-04 15:53:01

+0

@ceejayoz:是的,這是真的。 – Sarfraz 2010-07-04 15:54:31

+0

+1直接回答。沒有搞亂。只是'不要這樣做'的人! – zaf 2010-07-04 16:40:08

9

不同的是,該密碼在地址欄是可見的,並且該用戶進入您的網站可以在參照標頭看到用戶的密碼的網站。

+0

那是一個很不錯的,顯而易見的原因:) – Industrial 2010-07-04 15:55:04

+0

+1不那麼明顯的原因;) – zaf 2010-07-04 16:38:55

+0

+1'不同的是,該密碼是在地址bar'可見。這些都是清楚的話。 – Sarfraz 2010-07-04 17:09:30