2012-12-24 92 views
0

我寫了一個Filter以下是代碼。檢查模式以避免XSS攻擊

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) 
      throws IOException, ServletException { 

HttpServletRequest srequest = (HttpServletRequest) request; 
HttpServletResponse sresponse = (HttpServletResponse) response; 

String url = srequest.getRequestURI(); 
if(url.contains("//What patterns to be checked here?")) 
{ 
//Invalidate the Session 
//Redirect to error page 
} 

我正在讀取形成的URL並且想要避免XSS攻擊。所以,我想在URL中檢查任何可能表明可能導致XSS攻擊的模式。

我可以獲得我可以在此查看的所有模式的綜合列表嗎? 例如,

url.contains("<script>"); 
+2

相關:http://stackoverflow.com/questions/7722159/csrf-xss-and-sql-injection-attack-prevention-in-jsf/7725675#7725675此過濾器嘗試是荒謬的。只是不要那樣做。只顯示用戶控制的輸入HTML轉義(默認情況下JSF已經這樣做)。 – BalusC

+0

@BalusC +1爲您的答案。謝謝BalusC –

回答

7

哇,不要。有大量的來源會向你解釋爲什麼:

  • 黑名單幾乎總是一件壞事
  • 你不應該不管其來源的檢查XSS輸入,但是,轉義輸出

如果您想了解更多防止XSS的信息,請轉至Owasp xss cheat sheet

在另一個網站上,如果你想添加一些有限的腳本/編輯功能到你的網站,你可以並且應該使用替換(就像在你不使用的計算器中使用< \ b>轉換爲適當的html標籤)。或者您可以使用白名單,只允許使用文本和一些標籤,但這可能會非常棘手,您必須非常小心。

+0

非常感謝。 「_onlu,只允許文本和一些標籤,但這可能會非常棘手,您必須非常小心。」您能否詳細說明這一點? –

+1

因爲http是一種「編碼」的世界,加上攻擊者可以有一些關於如何向你展示你沒有想到所有東西的漂亮點子。這篇文章很好地描述了:黑客暴露的Web應用程序和Innocent Code。我會把這些書推薦給你,以更好地理解它可能會帶來的問題。 – fatfredyy

+0

對於有用的鏈接+1 –