• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      XSS攻擊機制及防御技術(shù)淺談

      2016-11-30 15:28:09葛強李俊胡永權(quán)
      計算機時代 2016年10期

      葛強 李俊 胡永權(quán)

      摘 要: 跨站腳本攻擊(XSS)是客戶端Web安全的主要威脅。因跨站腳本攻擊的多樣性以及Web安全漏洞的隱蔽性,使得該類型的攻擊很難徹底防御。介紹了跨站腳本攻擊的基本概念,針對不同環(huán)境發(fā)生的跨站腳本攻擊機制進行了分析,探討了不同環(huán)境下如何防御跨站腳本攻擊的具體技術(shù)。

      關(guān)鍵詞: Web安全; XSS; 跨站腳本攻擊; Web漏洞; XSS防御

      中圖分類號:TP393 文獻標志碼:A 文章編號:1006-8228(2016)10-11-03

      Discussion on XSS attack mechanism and defense technology

      Ge Qiang1,2, Li Jun3, Hu Yongquan1

      (1. College of Computer and Information Engineering, Henan University, Kaifeng, Henan 475004, China;

      2. College of Environment and Planning, Henan University; 3. Information Office)

      Abstract: Cross site scripting (XSS) attack is a major threat to the security of Web client. Because of the diversity of XSS attacks and Web security vulnerabilities hidden, this type of attack is very difficult to completely defense. This paper introduces the basic concept of XSS attacks, analyzes the XSS attack mechanisms of different environment, and discusses the specific technology to defense the XSS attacks of different environment.

      Key words: Web security; XSS; cross site scripting attack; Web vulnerability; XSS defense

      0 引言

      在當今的Web2.0時代,Web上的大多數(shù)站點實際上是應用程序,它們功能強大,提供各種各樣的服務。網(wǎng)站向用戶展示的內(nèi)容是以動態(tài)形式生成的,并且能夠滿足用戶的個性化需求[1]。但這些個性化的應用也給站點帶來一定的安全隱患,例如,跨站腳本攻擊等,同時,AJAX技術(shù)的流行使得XSS攻擊威脅變得更加嚴重。XSS攻擊在OWASP組織公布的OWASP TOP 2013中位列第三[2-3],可見XSS攻擊所造成的威脅之大。

      1 XSS原理

      XSS攻擊是一種間接攻擊,攻擊者通過Web服務器來攻擊其他用戶。攻擊者向服務器提交一段惡意代碼,而在服務器端并沒有對用戶的輸入做足夠的安全處理,就將用戶輸入寫入數(shù)據(jù)庫。當其他用戶向服務器再次請求含有惡意代碼的網(wǎng)頁時,服務器就會把包含惡意代碼的網(wǎng)頁返回,瀏覽器收到返回信息后進行相應的渲染、解碼工作,此時惡意代碼被觸發(fā)執(zhí)行,用戶的機密信息將被竊取,甚至可以控制用戶的系統(tǒng)[4]。XSS攻擊原理如圖1所示。

      先舉一個簡單的例子來展示跨站腳本攻擊的效果,主要代碼如下:

      請輸入你的姓名:

      Result.jsp代碼如下:

      你好:<%=request.getAttribute("name")%>

      如果用戶輸入惡意內(nèi)容,并且沒有對用戶的輸入做安全處理,因此在result頁面就可能會出現(xiàn)安全威脅。如用戶輸入“”,該字符串沒有經(jīng)過安全檢查就寫入數(shù)據(jù)庫,當該name值被再次取出時,這個字符串會被瀏覽器解析執(zhí)行,瀏覽器將彈出“Hello”。

      2 瀏覽器的解碼

      防御XSS攻擊的主要方式是對用戶的輸入進行安全檢查并進行適當?shù)木幋a。對用戶在不同地方的輸入應當進行不同的編碼。只有對用戶的輸入進行完整的安全檢查和正確的編碼才能有效防御XSS攻擊。

      對于下面這段代碼,瀏覽器會進行三種解碼。HTML解碼、JS解碼、URL解碼。

      This is a test

      Link

      首先,對于段落“This is a test”瀏覽器會進行HTML解碼。其次,對于“Hello”瀏覽器會首先進行HTML解碼,然后進行JS解碼。最后對于連接“www.a.com”瀏覽器會進行URL解碼[5]。因此,如果上述三個位置都是用戶可編輯的,則開發(fā)人員就需根據(jù)瀏覽器對以上幾處位置所進行的解碼順序來進行對應的編碼操作。

      3 XSS解決方案

      3.1 ESAPI解決方案

      防御XSS攻擊的有效辦法就是對用戶輸入進行安全檢查,然后采取相應措施,主要的措施有替換、移除、編碼[6-7]。下面主要討論采用編碼方法防御XSS攻擊。

      ESAPI是一個免費、開源的Web應用程序安全控制組件,可以幫助編程人員開發(fā)低風險應用程序。為了防御XSS攻擊,在實際情況中,應根據(jù)網(wǎng)頁顯示用戶輸入內(nèi)容位置的不同,而采用不同的編碼方式。用戶的輸入可能在網(wǎng)頁的多個地方進行輸出,比如HTML標簽中、HTML屬性中,URL中,事件中等等。ESAPI提供了對以上輸出場景的編碼方案。

      ⑴ 對于在HTML標簽中輸出和在Html屬性中輸出時均可采用HtmlEncode編碼方案。例如:

      String safeinput=ESAPI.encoder().encodeForHTML

      (request.getParameter(“userinput”));

      ⑵ 在事件中輸出時可采用JavascriptEncode編碼方案。

      String safeinput=ESAPI.encoder().encodeForJavaScript

      (request.getParameter(“userinput”));

      ⑶ 在地址欄中輸出時可采用URLEncode編碼方案。例如:

      Link

      經(jīng)過URLEncode編碼后將變?yōu)椋?/p>

      28123%29%22”>

      ⑷ 處理富文本

      論壇中的帖子是最常見的“富文本”。它允許用戶插入圖片、視頻、音頻等。在處理富文本時的思路還是進行“輸入檢查”。在處理富文本時,“事件”應該被嚴格禁止,而且一些危險的標簽也應該被過濾掉,例如

      屬性“name”的值是用戶的輸入內(nèi)容,對此,瀏覽器會對該值進行兩種解碼,首先是進行HTML解碼,然后進行JS解碼。因此對于此位置上的用戶輸入應當在服務器端先進行HTML編碼,其次進行JS編碼[8]。

      String safeinput=ESAPI.encoder().encoderForJavaScript

      (request.getParameter("name"));

      safeinput=ESAPI.encoder().encoderForHTML(safeinput);

      如果對“name”的值只進行HTML編碼而不進行JS編碼結(jié)果會怎樣?首先測試最簡單的字符串,將“name”的值賦值為“”,瀏覽器彈出“”。對于期待的效果彈出字符串“XSS”似乎并沒有實現(xiàn),這樣看來只使用HTML編碼似乎起到了作用,但適當改變“name”的值就會是另一種結(jié)果。如果改變“name”的值為“正常彈出);alert(‘XSS攻擊”,則會出現(xiàn)“正常彈出”,然后出現(xiàn)“XSS攻擊”。不難看出,當改變“name”的值后,alert的閉合情況發(fā)生了改變。“name”值中的“);”首先閉合了第一個alert,即“alert(‘正常彈出)”,然后是“alert(‘XSS攻擊)”。由此看來,在此只進行HTML編碼是不行的。如果在此同時進行了HTML編碼與JS編碼,效果如圖2所示。

      3.2 其他防御XSS攻擊的辦法

      除了第2小節(jié)的方法外,還需要以下幾種手段進行輔助。

      ⑴ 防止Cookie劫持

      針對此攻擊有一個比較不錯的防御辦法是使用HttpOnly屬性。通過為Cookie增加HttpOnly屬性,即可大大降低Cookie被劫持的風險。如果Cookie帶有HttpOnly屬性,則瀏覽器會禁止JavaScript訪問該Cookie。添加方法是在web.xml中配置為true。

      ⑵ 輸入檢查

      對于用戶的輸入都必須進行輸入檢查。主要檢查在用戶的輸入中,是否包含了一些危險字符如<、、”和一些危險標簽如

      公司地址: 北京市西城區(qū)德外大街83號德勝國際中心B-11

      客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com

      電信與信息服務業(yè)務經(jīng)營許可證:京icp證060024號

      Dragonsource.com Inc. All Rights Reserved

      icp

      镇江市| 建平县| 呼玛县| 玉林市| 栖霞市| 秀山| 南陵县| 靖宇县| 泸定县| 平和县| 精河县| 瓦房店市| 文昌市| 鹿泉市| 赤城县| 秦安县| 青川县| 梓潼县| 上犹县| 苍南县| 德惠市| 穆棱市| 崇信县| 茂名市| 玉田县| 扎鲁特旗| 冕宁县| 射阳县| 西城区| 和田县| 江永县| 开江县| 玉环县| 沙河市| 东乡族自治县| 额济纳旗| 金堂县| 连江县| 长泰县| 平谷区| 资中县|