預設情況下,代理程式和/或負載平衡器是否會更改 HTTP 查詢字串?

預設情況下,代理程式和/或負載平衡器是否會更改 HTTP 查詢字串?

問題簡介

最近我正在研究一些請求簽名演算法,結果發現關於在簽名部分中包含查詢字串的觀點是「多樣化的」。

長話短說,反對在簽名字串中包含查詢字串的人的論點是查詢字串可以更改(例如,可以更改值,可以刪除/添加參數,可以更改順序)。

此外,我從未在代理或負載平衡器中經歷過此類行為,儘管我經歷過諸如隱藏Authorization標頭(例如透過Apache/WSGI)、更改請求方法(透過負載平衡器,可能亞馬遜的伺服器會做這樣的事情)之類的事情。我知道可以使用一些自訂腳本/規則在反向代理或負載平衡器上啟用這種行為,但可以透過任何請求的一部分。

基於應該包含查詢字串的假設已經做了很多工作,而且不簽署請求最重要的部分之一看起來很愚蠢。因此,我需要知道以原始形式包含查詢字串(因為它在 URL 中傳遞)是否會成為將來的問題。

實際問題

所以我的問題是:

任何代理程式或負載平衡器更改查詢字串是否很常見?對我來說這似乎很愚蠢。您是否知道預設執行此操作的任何代理程式或負載平衡器(軟體或其安裝)?

我確信在這種情況下,我們可以在代理/負載平衡器層級上處理簽名驗證,但如果這在我們無法控制的中介機構中很常見,那麼這可能是一個可行的論點。

請告訴我您對此的了解。如果您有任何疑問,請告訴我。

作為澄清,透過請求參數?arg1=val1&arg2=val2我的意思是以下 URL 的「 」部分:

http://example.com/something/else?arg1=val1&arg2=val2

並通過“更改查詢字串「我的意思是任何可能使客戶端和伺服器看起來不同的操作(伺服器看到的查詢字串與客戶端使用的不同)。

答案1

許多現代反向代理可以更改查詢字串。但我認為負載平衡器或代理沒有理由預設這樣做。

也許它使用 URI 來進行黏性會話負載平衡,但這確實很愚蠢。

所以:不,我不知道任何負載平衡器,預設會更改 uri 和參數。

答案2

我還沒有看到一個代理可以做到這一點,但如果你不能為每個IP 做到這一點,並且你希望它能夠工作,即使用戶禁用了cookie,它也可能是一個可行的會話粘性解決方案。

相關內容