最近的FindBugs後(FB)運行報告說有:安全 - HTTP響應拆分漏洞下面的代碼觸發它:如何解決與ESAPI的HTTP響應拆分漏洞
String referrer = req.getParameter("referrer");
if (referrer != null) {
launchURL += "&referrer="+(referrer);
}
resp.sendRedirect(launchURL);
基本上「 referrer的http參數包含一個url,當點擊我們的應用程序中的後退按鈕時,瀏覽器返回。它作爲參數附加到url。經過一番研究,我知道我需要清理引薦網址。更多的研究後,我發現esapi項目,該項目似乎提供了這樣的功能:
//1st canonicalize
import org.owasp.esapi.Encoder;
import org.owasp.esapi.Validator;
import org.owasp.esapi.reference.DefaultEncoder;
import org.owasp.esapi.reference.DefaultValidator;
[...]
Encoder encoder = new DefaultEncoder(new ArrayList<String>());
String cReferrer = encoder.canonicalize(referrer);
不過,我並沒有弄清楚如何檢測例如jscript代碼或其他不屬於引薦網址的內容。那麼我怎麼才能用esapi來實現呢?
我想:
Validator validator = new DefaultValidator(encoder);
validator.isValidInput("Redirect URL",referrer,"HTTPParameterValue",512,false);
然而,這是行不通的。我需要的是這會導致功能:
http://www.google.com/login?dest=http://google.com/%0D%0ALocation:JavaScript的:0D%0A%0D%%0Aalert(document.cookie中)(不正常)
還是可以調用以下語句嗎?
encoder.encodeForHTMLAttribute(referrer);
任何幫助表示讚賞。
計算'encodeForURL(decodeFromURL(url))'可能會破壞你的URL。 – maurizeio 2015-12-26 20:31:31