Java世界

          學習筆記

          常用鏈接

          統計

          積分與排名

          天籟村

          新華網

          雅虎

          最新評論

          防止 XSS 攻擊 解決方案(轉載)

          XSS又叫CSS英文縮寫為Cross Site Script
          中文意思為跨站腳本攻擊
          具體內容指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,
          嵌入其中Web里面的html代碼會被執行,從而達到惡意用戶的特殊目的.

           

          解決方案

           

          第一。過濾

           

          過濾 標簽 等字符 ,但是這樣 對用戶是不公平的。

          第二。用asii 碼替換

           

          如 <  >  ! 等 

           

          第三 。 用 element.innerText 顯示用戶數據

           

           這樣要寫大量的 js

          第四。 使用 <xmp>

          <xmp>標簽不解析內部的html元素,而且不執行內部的javascript腳本代碼

          但是要防止攻擊代碼在數據中間插入</xmp>從而繞過保護

           

          第五。通過 frame 來防止 數據頁面攻擊 主頁面

           使用 document.domain 屬性 來控制

           

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" >
          <head>
              <title>測試iframe的單向訪問</title>
              <style>
                  body
                  {
                   font-size:12px;
                  }
              </style>
          </head>
          <script language="javascript">

          //frame1的document
          var oDocument=null;

          //響應frame1的onload事件
          function frame1_onload()
          {    
              //舊的domain
              var sDomainOld=document.domain;
              
              //降級domain
              document.domain="pimshell.com";
              
              //保存frame1的document
              oDocument=frame1.document;
              
              //恢復domain
              document.domain=sDomainOld;
              
              //準備就緒
              button1.disabled=false;
          }

          //改變IFrame的背景顏色
          function changebackcolor()
          {
              if(oDocument.body.style.backgroundColor=="")
                  oDocument.body.style.backgroundColor="blue";
              else
                  oDocument.body.style.backgroundColor="";
          }

          </script>
          <body>
          為了避免XSS跨站攻擊,在大多數html編輯器的設計中,都是要將用戶輸入的HTML內容進行過濾。過濾代碼繁瑣暫且不說,關鍵是不能保證考慮到所有已知和未知的攻擊類型。
          <br />
          如果我們能設計一個iframe的單向訪問模型,就可以讓用戶輸入的HTML內容在受控的環境中執行,也就不需要再進行過濾了。
          <br />
          舉例來說,我們html編輯器所在的主頁面為a,嵌入一個iframe為b。a可以訪問b的內容,而b卻不能訪問a的內容。這樣的話,b中的HTML內容即使包含攻擊代碼,也無法發揮作用了。
          <br />
          <br />
          <table>
          <tr>
          <td width="300px;" valign="top">
              <iframe src="http://bb.pimshell.com/pimshell/test/b.htm" id="frame1" onload="frame1_onload();"></iframe>
              <br />
              <br />
              <button id="button1" onclick="changebackcolor();" disabled>--&gt; 改變IFrame的背景顏色</button>
          </td>
          <td valign="top">
              iframe中的代碼:
              <br />
              <pre style="background-color:whitesmoke; border:dashed 1px black; padding:4px;">
                  &lt;script language="javascript"&gt;

                  //domain
                  document.domain="pimshell.com";

                  //訪問主頁面試試看
                  function geta()
                  {
                      alert(parent.document.body.innerHTML);
                  }

                  &lt;/script&gt;    
              </pre>
              <br />
              主頁面中的代碼:
              <br />
              <pre style="background-color:whitesmoke; border:dashed 1px black; padding:4px;">
                  &lt;script language="javascript"&gt;

                      //frame1的document
                      var oDocument=null;

                      //響應frame1的onload事件
                      function frame1_onload()
                      {    
                          //舊的domain
                          var sDomainOld=document.domain;
                          
                          //降級domain
                          document.domain="pimshell.com";
                          
                          //保存frame1的document
                          oDocument=frame1.document;
                          
                          //恢復domain
                          document.domain=sDomainOld;
                          
                          //準備就緒
                          button1.disabled=false;
                      }

                      //改變IFrame的背景顏色
                      function changebackcolor()
                      {
                          if(oDocument.body.style.backgroundColor=="")
                              oDocument.body.style.backgroundColor="blue";
                          else
                              oDocument.body.style.backgroundColor="";
                      }

                  &lt;/script&gt;
              </pre>
          </td>
          </tr></table>
          </table>



          </div>

          </body>
          </html>

          posted on 2012-08-13 14:08 Rabbit 閱讀(6516) 評論(3)  編輯  收藏

          評論

          # re: 防止 XSS 攻擊 解決方案(轉載) 2013-09-16 11:06 whh

          <img onerror=”alert(123)”src=http:// www.2cto.com>  回復  更多評論   

          # re: 防止 XSS 攻擊 解決方案(轉載) 2013-12-26 17:22 <a href=# onclick=\"document.location=\'ht

          楳土ffwerwerwer  回復  更多評論   

          # re: 防止 XSS 攻擊 解決方案(轉載)"/><script>alert(document.cookie)</script><!-- 2014-05-07 14:14 會盡快

          幾何變換  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 邯郸县| 富民县| 连城县| 普安县| 庆云县| 南充市| 腾冲县| 乐亭县| 太康县| 邵阳县| 蒙自县| 车险| 黄骅市| 江永县| 汝城县| 蕲春县| 高州市| 滕州市| 浦城县| 汝阳县| 奉贤区| 陵水| 丹凤县| 衡阳市| 浦城县| 阳泉市| 罗甸县| 黄梅县| 高碑店市| 哈密市| 米易县| 五寨县| 太原市| 花垣县| 星座| 霍林郭勒市| 潞城市| 禹城市| 开阳县| 克拉玛依市| 鹤山市|