2017-04-04 100 views
0

是否有任何使用NGINX限制查詢參數的簡單方法? 由此我的意思是有一組允許的查詢參數(由應用程序使用),任何其他查詢參數應該被刪除。基本上允許參數的白名單NGINX限制查詢參數

  • 我正在尋找這樣做,而無需重定向用戶。
  • 參數將在 查詢字符串中出現沒有特定的順序。
  • 如果請求包含允許的參數和不允許的參數,則允許的參數爲 。

例如:如果我允許參數A,B,C則:

  • 查詢字符串A = X &乙= Y & C = z是完全沒有問題。
  • 查詢字符串是?A = X & K =Ĵ& C =ž& B = y,則它會被重寫爲A = X & C =ž& B = Y(所述 「K」 參數被除去, 「K」可以是任何東西)
  • 查詢字符串?K = j被完全

去除大部分我發現討論刪除特定的查詢參數,或刪除整個查詢字符串的答案。

回答

0

如果你的白名單是相對較短,則可以構建從頭得到的URI是這樣的:

location ~ ^/(.*)$ { 
    proxy_pass http://backend/$1?A=$arg_a&B=$arg_b&C=$arg_c; 
} 

在這種情況下,一些參數可能是空的,如果不存在的原始請求。 或者您可以使用Lua,njs或perl模塊。