簡體   English   中英

如何防止XSS攻擊

[英]how to prevent XSS attack

滲透測試團隊告訴我,以下URL導致XSS攻擊-

https://some-site.com/test/jsp/download_msg.jsp?&report_id=0&id=1369413198709cUjxb8IRCtTJcbYBHb0Qiph&id=1369413198709cUj

這是我的download_msg.jsp代碼

        <% String download_msg = null;
           if (session == null || session.getAttribute("user") == null) {
               download_msg = "Error message";
           } else {
               download_msg =
              (OLSUser)session.getAttribute("user")).getReportInfo().getDownloadMsg();
           } 
        %>

       <html>
        <head>
         <SCRIPT LANGUAGE='JavaScript' SRC='/Test/test.js'></SCRIPT>
           <SCRIPT LANGUAGE='JavaScript'>init('StmsReps');</SCRIPT>
             <script language="JavaScript">
            function redirect() {
             if (window.focus)
            self.focus();
         this.location = "/test/DownloadReport?<%=request.getQueryString()%>";
    }
        </script>
     <title>XSS</title>
     </head>
      <body marginwidth='0' marginheight='0' onload='javascript:redirect()'>
         <table width='90%' height='100%' align='center' border='0' cellspacing='0'
            cellpadding='0'>               
      <tr>
    <td align='center' class='header2'> <%= download_msg %></td>
   </tr>
   </table>
   </body>
   </html>

我發現jstl可以處理XSS攻擊。 您能否建議以下內容是否可以,還是我需要做其他事情?

         <c:out value="<%= download_msg %>" escapeXml="true"/>

不,這還不夠

this.location = "/test/DownloadReport?<%=request.getQueryString()%>";

攻擊者可能會發送帶有查詢字符串的鏈接,例如

?</script><script>alert(1337)//

要么

?%22/alert('Pwned')

幼稚的用戶可能會單擊鏈接並執行嵌入的代碼。

您必須在將不受信任的輸入插入到模板中的任何地方應用適當的轉義策略。


我顯然無法針對您的設置測試這些字符串,並且如果您使用它們進行測試,它們可能無法正常工作,因為瀏覽器通常會對查詢字符串進行某種標准化,但是您不應該依賴它來保護自己免受查詢中的HTML元字符的侵害字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM