我正在使用我的struts2應用程序來解決參數篡改問題。我聽說這可以通過在我的動作中實現ParameterNameAware接口來解決,但是我沒有找到解釋這種情況的最佳示例。任何人都可以提供一個關於如何使用ParameterNameAware的好例子。快速解答將非常感激。使用ParameterNameAware接口避免參數篡改(Struts2)
1
A
回答
1
有關此接口的全部想法是維護一個有效參數名稱的列表,並通過拒絕不在此列表中的任何請求參數(白名單)。這對於黑客試圖包含不需要的表單的情況非常有用字段值作爲可能在某些情況下執行的隱藏變量。例如,包括可能會在服務器端創建拒絕服務的很多表單字符變量(> 10000等)。
一旦實現了這一點,你可以立刻拒絕任何不想要的參數在當前請求的範圍,或者你可以利用這種情況更好的控制。
可能實現:
落實ParameterNameAware
接口並覆蓋其acceptableParameterName
方法如下:
public boolean acceptableParameterName(String parameterName) {
boolean allowedParameterName = true ;
if (parameterName.contains("session") || parameterName.contains("request")) {
allowedParameterName = false ;
}
return allowedParameterName;
}
你需要實現你的form bean這個接口,其中具有getter和setter方法。在這個特定的例子中,如果當前請求包含任何表單字段變量,如請求或會話,那麼這是一個失敗的情況。這只是一個典型的例子。有一個在這個環節 Class ParametersInterceptor
相關問題
- 1. 如何避免篡改JavaScript/HTML元素
- 2. 通過網址跟蹤用戶並避免手動篡改
- 3. 寧靜Web參數篡改
- 4. 如何使用ParameterNameAware
- 5. 避免通用參數
- 6. Fluent接口:避免泛型類型的過多參數
- 7. MVC路由如何避免使用參數更改網址
- 8. 避免使用左聯接
- 9. 查詢字符串參數和篡改
- 10. 參數篡改爲下拉列表 - ASP.NET
- 11. 避免與靜態參數
- 12. 保護HTTP請求免遭篡改
- 13. struts2迭代器:避免代碼複製
- 14. 使用帶Struts2 Jquery參數的參數
- 15. 篡改語音使用audiorecord
- 16. 如何避免向接口類下推?
- 17. WCF設計:避免接口複製
- 18. 如何避免可比接口
- 19. 如何避免在java 8中使用接口?
- 20. 避免在__init__方法中通過deepcopy更改用戶參數?
- 21. 使用函數參數類型避免弱引用?
- 22. 如何避免使用textWatcher editText更改?
- 23. 從鏈接調用篡改鍵功能
- 24. 避免篡改客戶關係管理表格中的只讀字段
- 25. MVC Autofac ExtensibleActionInvoker使用接口參數阻止我使用接口參數
- 26. 直接使用imfilter_mex避免imfilter
- 27. 如何避免鏈接到使用wget
- 28. 避免使用OOP
- 29. 避免使用javascript
- 30. 避免使用ServiceLocator
thanx的響應完整的文檔。我對此很困惑,意思是說這個過程。多久可以調用acceptableParameterName(),並在我的操作類中找到可接受的參數(白名單)(是否所有變量都帶有setter和getters用於操作?)。正如你所說的那樣,當攻擊者用更多的參數改變查詢字符串時,如何在沒有定義輸入數據變量的情況下被我們的動作類接受,它必須顯示404錯誤。如果我混淆你,我真的很興奮。 newbie struts2 :-) – Rony
@Rocky_Rony,你的白名單隻不過是預定義的表單字段變量集合,你需要在你的bean類中實現這個接口。我已經更新了我的答案。 – UVM