299

      跨站腳本攻擊XSS

      時間: 2015-10-09 11:37:33   點擊數(shù): 29926   來源: 耐思智慧

      今天,泥瓦匠帶你們認識下XSS,然后關于怎么防御的問題。至于防御的話,仁者見仁智者見智。爾等啥都不配不上的就綽見,望各位閱讀者相互討論。泥瓦匠目前是搞JAVA的,所以例子上JAVA比較多。


      一、認識XSS先

      先說個故事吧,在上一篇,我還想說這個案例。其實什么叫攻擊,很簡單。獲取攻擊者想要的信息,就黑成功了。抓到一個Tomcat漏洞(這不是我說的,一個認識的人說的),上傳一個JSP,里面模擬HttpClient,下載一個木馬,運行。OK,搞定了。所以,沒有絕對的安全。

      今天,泥瓦匠帶你們認識下XSS,然后關于怎么防御的問題。至于防御的話,仁者見仁智者見智。爾等啥都不配不上的就綽見,望各位閱讀者相互討論。泥瓦匠目前是搞JAVA的,所以例子上JAVA比較多。



      Q: 什么是XSS? 為啥有這個呢?

      A: 全名:Cross Site Script,中文名:跨站腳本攻擊。顧名思義,是指“HTML注入”纂改了網(wǎng)頁,插入惡意的腳本,從而在用戶用瀏覽網(wǎng)頁的時候,控制用戶瀏覽器的一種攻擊。

      XSS根據(jù)攻擊的穩(wěn)定性可分為三種:反射型XSS, 存儲型XSS,DOM Based XSS.

      <img title="image" alt="image" width="390" height="311" src="http://s9.51cto.com/wyfs02/M02/59/3F/wKioL1TNg4bxyLbwAAA-WGcB1yw307.jpg" style="border:0px;" />

      二、XSS攻擊

      再來了解下XSS,是如何攻擊?泥瓦匠這時候想到一句話:知己知彼,百戰(zhàn)百勝吧。這攻擊我們不會很詳細解釋,畢竟想說的是XSS防御嘛。首先,泥瓦匠要介紹下的是:

      XSS Playload,所謂用以完成各種具體的功能的惡意腳本。這時候我想到了黑客精神中的小插曲,現(xiàn)在所謂的“黑客”不是真正的黑客,而是稱為腳本小子(Script Kid)。常見的一個XSS Playload,就是通過讀取瀏覽器的Cookie對象,從而發(fā)起了‘Cookie劫持’攻擊。這個泥瓦匠會教你們?nèi)シ烙,其中Cookie的‘HttpOnly’標識可以防止哦。

      強大的XSS Playload可以做以下的事情哈:1、構造 GET 與 POST 請求 2、各種釣魚 3、識別用戶瀏覽器 等等

      Q&A

      Q:什么叫做釣魚呢?

      A:顧名思義,愿者上鉤,這里做貶義用法。比如,人家用一個假的彈出框,或者假的頁面讓你輸入QQ信息,或者啥賬號信息。其實你一輸入人家服務器獲取到你的賬戶密碼了。這就是魚兒上鉤了。 如圖比喻:

      <img title="image" alt="image" width="417" height="318" src="http://s8.51cto.com/wyfs02/M02/59/42/wKiom1TNgqDTmmgOAAA3ZIJeddY827.jpg" style="border:0px;" />

      三、XSS防御(重點)

      兵來將擋,水來土掩。泥瓦匠在Web安全上,想提醒大家的是:“再高的樹,猴子也能爬上去。”因此,我們考慮的地方有些默認都給你做好了,有些需要我們自己去關心,去設置。

      其實在看不到的地方很多已經(jīng)對抗XSS做了些措施。比如各種瀏覽器等。

      一、按著上面的思路,泥瓦匠先聊下Cookie,一個Cookie,我們是這樣使用的:

      1、瀏覽器下服務器發(fā)送請求,準備獲取Cookie

      2、服務器返回發(fā)送Cookie頭,向客戶端瀏覽器寫入Cookie。(注意哦,這里是瀏覽器,不要當成什么瀏覽器內(nèi)核)

      3、在Cookie到期前,瀏覽器所有頁面,都會發(fā)送Cookie。

      這就意味著,我們Cookie不能亂用。就像Session一樣,所以在使用的時候,要注意下。有時候Cooike在用于記住密碼的時候,千萬要注意要將Cookie設置HttpOnly屬性為Ture。這里我以SpringMVC為例子。如果用到Cookie的時候,應該這樣:


       // create cookie and set it in response
      Cookie cookie1 = new Cookie("cookie1", "cookieValueHttpOnly");
      Cookie cookie2 = new Cookie("cookie2", "cookieValue");
      cookie1.setHttpOnly(true);
       
      response.addCookie(cookie1);
      response.addCookie(cookie2);


      截個Controller整個代碼看看:

      <img title="image" alt="image" width="498" height="371" src="http://s4.51cto.com/wyfs02/M02/59/3F/wKioL1TNg4bwYQYVAABwFSGDcPM003.jpg" style="border:0px;" />

      我們打開瀏覽器可以看到下面這種結(jié)果,訪問URL這個Controller層,打開Firebug查看:

      <img title="image" alt="image" width="498" height="136" src="http://s7.51cto.com/wyfs02/M00/59/3F/wKioL1TNg4eRUGJhAAA8ZC-kclw848.jpg" style="border:0px;" />

      二、輸入校驗

      輸入校驗的邏輯必須放在服務端中實現(xiàn)。如果用JS進行的話,容易被攻擊者繞過去。所以普遍的做法是,類似很多代碼一樣進行Double Check:”客戶端JS校驗和服務端校驗一起,這樣客戶端JS校驗會阻擋大部分甚至說99%的用戶的誤操作。”

      在XSS防御上,我們需要對用戶輸入的一些特殊字符校驗,過濾或者是編碼。這種輸入校驗的方式成為“XSS Filter”。首先我們在配置文件中,

      <img title="image" alt="image" width="498" height="304" src="http://s5.51cto.com/wyfs02/M02/59/42/wKiom1TNgqLz9TO-AACA0kcgxeM065.jpg" style="border:0px;" />

      其中的路徑配置當然,在你需要的地方配置下咯。然后泥瓦匠在這里寫了個,Http請求裝飾類,用來對這些參數(shù)的過濾。說干就干唄~實戰(zhàn)出經(jīng)驗。


      public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
      {
       
          public XssHttpServletRequestWrapper(HttpServletRequest request)
          {
              super(request);
          }
       
          public String[] getParameterValues(String parameter)
          {
              String[] values = super.getParameterValues(parameter);
              if (values==null)
              {
                  return null;
              }
              int count = values.length;
              String[] encodedValues = new String[count];
              for (int i = 0; i <  count; i++)
              {
                  encodedValues[i] = cleanXSS(values[i]);
              }
              return encodedValues;
          }
       
          public String getParameter(String parameter)
          {
              String  value=  super.getParameter(parameter);
              if (value == null)
              {
                  return null;
              }
              return cleanXSS(value);
          }
       
          public String getHeader(String name)
          {
              String  value=  super.getHeader(name);
              if (value == null)
                  return null;
              return cleanXSS(value);
          }
       
          /**
            * @Title: cleanXSS
            * @Description: You'll need to remove the spaces from the html entities below
            * @param @param value
            * @param @return
            * @return String
            */
          private String cleanXSS(String value)
          {
              value= value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");
              value = value.replaceAll("\(", "& #40;").replaceAll("\)", "& #41;");
              value = value.replaceAll("'", "& #39;");
              value = value.replaceAll("eval\((.*)\)", "");
              value = value.replaceAll("[\"\'][\s]*javascript:(.*)[\"\']", """");
              value = value.replaceAll("script", "");
              return value;
          }
      }


      三、輸出校驗

      一般來說,除了富文本之外,在變量輸出到HTML頁面,可以使用編碼或者轉(zhuǎn)義的方式來防御XSS攻擊。這是一種各家委婉的方式吧。

      四、總結(jié)

        用兵之道在于,如何正確的使用,才能以少勝多。Web安全這場戰(zhàn)爭也一樣,所以要如何正確的使用XSS防御。如果你是菜鳥,沒關系,建議你使用企業(yè)自助建站系統(tǒng)建站寶盒,通過這套程序您可以有效規(guī)避跨站腳本攻擊XSS,將合適的工作交給最專業(yè)的人,制作一個擁有電腦站+手機站+微站+手機APP的四站一體的企業(yè)商城網(wǎng)站,在線銷售產(chǎn)品豈不是很好呢。

      Writer:BYSocket(泥沙磚瓦漿木匠)


      上一篇:公司官網(wǎng)打開慢,優(yōu)化服務器負載均衡解決方案 下一篇:給企業(yè)微信運營最中肯的10條建議

      旗下網(wǎng)站:耐思智慧 - 淘域網(wǎng) - 我的400電話 - 中文域名:耐思尼克.cn 耐思尼克.top

      耐思智慧 © 版權所有 Copyright © 2000-2025 IISP.COM,Inc. All rights reserved

      備案號碼: 粵ICP備09063828號  公安備案號: 公安備案 粵公網(wǎng)安備 44049002000123號  域名注冊服務機構許可:粵D3.1-20240003 CN域名代理自深圳萬維網(wǎng)

      聲明:本網(wǎng)站中所使用到的其他各種版權內(nèi)容,包括但不限于文章、圖片、視頻、音頻、字體等內(nèi)容版權歸原作者所有,如權利所有人發(fā)現(xiàn),請及時告知,以便我們刪除版權內(nèi)容

      本站程序界面、源代碼受相關法律保護, 未經(jīng)授權, 嚴禁使用; 耐思智慧 © 為我公司注冊商標, 未經(jīng)授權, 嚴禁使用

      法律顧問:珠海知名律師 廣東篤行律師事務所 夏天風 律師

      主站蜘蛛池模板: 福利片福利一区二区三区| 高清一区二区三区日本久| 一区二区三区四区精品视频| 性色AV一区二区三区天美传媒| 亚洲av区一区二区三| 尤物精品视频一区二区三区 | 精品无码成人片一区二区| 人妻天天爽夜夜爽一区二区| 中文字幕一区二区三区有限公司| 无码人妻一区二区三区一| 国产精品毛片VA一区二区三区| 一区二区三区亚洲视频| 国产传媒一区二区三区呀| 精品国产一区二区三区| 亚洲av日韩综合一区久热| 亚洲av乱码一区二区三区按摩| 亚洲丰满熟女一区二区v| 精品性影院一区二区三区内射 | 日本一道一区二区免费看| 精品国产一区二区三区AV| 中文乱码字幕高清一区二区| 国产91大片精品一区在线观看 | 精品一区二区三区免费毛片| 正在播放国产一区| 日本精品一区二区三本中文| 国产精品资源一区二区| 国产亚洲综合精品一区二区三区 | 日本一区频道在线视频| 国产福利一区二区三区视频在线| 国产精品一区在线播放| 久久人妻无码一区二区 | 亚洲中文字幕丝袜制服一区| 国产主播一区二区三区| 国产99精品一区二区三区免费| www一区二区www免费| 国产一区二区在线视频| 国产福利一区二区三区视频在线 | 无码av免费一区二区三区试看| 无码精品人妻一区二区三区漫画| 亚洲Av无码一区二区二三区 | 蜜桃无码一区二区三区|