本書Tomcat:權威指南(第二版),O'Reilly,Jason Brittain提供了一個Tomcat過濾器(和一個閥門)來過濾掉來自HTTP請求的不良用戶輸入以幫助避免惡意攻擊。我已經使用了多年的篩選器,並且我發現它是運行在Tomcat上的Web應用程序的一個很好的安全工具。它曾經與舊版Tomcat一起工作,但隨着更新版本的Tomcat的使用,它不再有效。更糟糕的是,如果沒有默默地失敗。你必須通過實驗來了解它不起作用。BadInputFilter不再有效
看起來過濾器正在編輯請求參數的副本,但實際的請求參數在請求到達Web服務器時不會改變。我試過了閥門,但它也無法以相同的方式工作。您可以使用過濾器或閥來阻止參數中具有錯誤數據的HTTP請求,但不能再使用它來編輯參數。
有沒有人有解決這個問題的辦法?也就是說,是否存在一個BadInputFilter版本或替代版本,它將實際修改請求參數,然後將修改後的參數發送到Web服務器。
是否可以在答案中總結該文章的相關部分,以防止潛在的鏈接腐爛並防止用戶點擊以獲取核心消息? –
摘要: HttpServletRequest有一個名爲getParameterMap()的方法,該方法返回一個將參數名稱映射到值的不可變Map。爲了「逃避」用戶輸入,您需要能夠修改這些參數名稱和/或值。您不能直接修改Map,但可以將整個HttpServletRequest包裝在HttpServletRequestWrapper中,然後可以將它傳遞到目標資源以代替原始請求。 「包裝」請求複製並轉義原始參數名稱和值,這些是目標資源有權訪問的參數。 –