日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XSS(跨站脚本攻击)攻击与防御

發布時間:2023/12/4 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XSS(跨站脚本攻击)攻击与防御 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 XSS攻擊原理

XSS原稱為CSS(Cross-Site Scripting),因為和層疊樣式表(Cascading Style Sheets)重名,所以改稱為XSS(X一般有未知的含義,還有擴展的含義)。XSS攻擊涉及到三方:攻擊者,用戶,web server。用戶是通過瀏覽器來訪問web server上的網頁,XSS攻擊就是攻擊者通過各種辦法,在用戶訪問的網頁中插入自己的腳本,讓其在用戶訪問網頁時在其瀏覽器中進行執行。攻擊者通過插入的腳本的執行,來獲得用戶的信息,比如cookie,發送到攻擊者自己的網站(跨站了)。所以稱為跨站腳本攻擊。XSS可以分為反射型XSS和持久性XSS,還有DOM Based XSS。(一句話,XSS就是在用戶的瀏覽器中執行攻擊者自己定制的腳本。)

1.1 反射型XSS

反射性XSS,也就是非持久性XSS。用戶點擊攻擊鏈接,服務器解析后響應,在返回的響應內容中出現攻擊者的XSS代碼,被瀏覽器執行。一來一去,XSS攻擊腳本被web server反射回來給瀏覽器執行,所以稱為反射型XSS。

特點:

1> XSS攻擊代碼非持久性,也就是沒有保存在web server中,而是出現在URL地址中;

2> 非持久性,那么攻擊方式就不同了。一般是攻擊者通過郵件,聊天軟件等等方式發送攻擊URL,然后用戶點擊來達到攻擊的;

1.2 持久型XSS

區別就是XSS惡意代碼存儲在web server中,這樣,每一個訪問特定網頁的用戶,都會被攻擊。

特點:

1> XSS攻擊代碼存儲于web server上;

2> 攻擊者,一般是通過網站的留言、評論、博客、日志等等功能(所有能夠向web server輸入內容的地方),將攻擊代碼存儲到web server上的;

有時持久性XSS和反射型XSS是同時使用的,比如先通過對一個攻擊url進行編碼(來繞過xss filter),然后提交該web server(存儲在web server中), 然后用戶在瀏覽頁面時,如果點擊該url,就會觸發一個XSS攻擊。當然用戶點擊該url時,也可能會觸發一個CSRF(Cross site request forgery)攻擊。

1.3 DOM based XSS

基于DOM的XSS,也就是web server不參與,僅僅涉及到瀏覽器的XSS。比如根據用戶的輸入來動態構造一個DOM節點,如果沒有對用戶的輸入進行過濾,那么也就導致XSS攻擊的產生。過濾可以考慮采用esapi4js。

參見:http://www.freebuf.com/articles/web/29177.html , http://www.zhihu.com/question/26628342/answer/33504799

二、 XSS 存在的原因

XSS 存在的根本原因是,對URL中的參數,對用戶輸入提交給web server的內容,沒有進行充分的過濾。如果我們能夠在web程序中,對用戶提交的URL中的參數,和提交的所有內容,進行充分的過濾,將所有的不合法的參數和輸入內容過濾掉,那么就不會導致“在用戶的瀏覽器中執行攻擊者自己定制的腳本”。

但是,其實充分而完全的過濾,實際上是無法實現的。因為攻擊者有各種各樣的神奇的,你完全想象不到的方式來繞過服務器端的過濾,最典型的就是對URL和參數進行各種的編碼,比如escape, encodeURI, encodeURIComponent, 16進制,10進制,8進制,來繞過XSS過濾。那么我們如何來防御XSS呢?

三、 XSS 攻擊的防御

原則:寧死也不讓數據變成可執行的代碼,不信任任何用戶的數據,嚴格區分數據和代碼。

XSS防御的總體思路是:對輸入(和URL參數)進行過濾,對輸出進行編碼

也就是對提交的所有內容進行過濾,對url中的參數進行過濾,過濾掉會導致腳本執行的相關內容;然后對動態輸出到頁面的內容進行html編碼,使腳本無法在瀏覽器中執行。雖然對輸入過濾可以被繞過,但是也還是會攔截很大一部分的XSS攻擊。

  • 對輸入內容的特定字符進行編碼,例如表示 html標記的 < > 等符號。

  • 對重要的 cookie設置 httpOnly, 防止客戶端通過document.cookie讀取 cookie,此 HTTP頭由服務端設置。

  • 將不可信的值輸出 URL參數之前,進行 URLEncode操作,而對于從 URL參數中獲取值一定要進行格式檢測(比如你需要的時URL,就判讀是否滿足URL格式)。

  • 不要使用 Eval來解析并運行不確定的數據或代碼,對于 JSON解析請使用 JSON.parse() 方法。

  • 后端接口也應該要做到關鍵字符過濾的問題。

  • 使用XSS Filter

總結

以上是生活随笔為你收集整理的XSS(跨站脚本攻击)攻击与防御的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。