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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

密码学系列之:内容嗅探

發布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密码学系列之:内容嗅探 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • MIME types
  • 瀏覽器嗅探
  • 客戶端嗅探

簡介

內容嗅探,也被稱為媒體類型嗅探或MIME嗅探,是檢查一個字節流的內容,試圖推斷其中數據的文件格式的做法。內容嗅探通常用在媒體類型沒有被準確指定的情況,用于補償元數據信息。

本文將會講解內容嗅探的常用場景和可能出現的問題。

MIME types

MIME的全稱是Multipurpose Internet Mail Extensions,多用途互聯網郵件擴展。它是一種標準,它表明了文檔、文件或各種字節的性質和格式。它是在IETF的RFC 6838中定義的。互聯網編號分配機構(IANA)負責定義所有官方的MIME類型。

MIME的結構包含兩部分,分別是type和subtype,他們以 / 來進行分割:

type/subtype

類型代表數據類型所屬的一般類別,如視頻或文本。子類型確定MIME類型所代表的指定類型的確切數據種類。例如,對于 MIME 類型的文本,子類型可能是 plain(純文本)、html(HTML 源代碼)或日歷(對于 iCalendar/.ics)文件。

每種類型都有它自己的一套可能的子類型, 一個MIME類型必須包含一個類型和一個子類型。

還可以在后面加上額外的參數:

type/subtype;parameter=value

例如,對于主類型是text的任何MIME類型,可選的charset參數可以用來指定數據中字符的字符集。如果沒有指定字符集,默認為ASCII (US-ASCII),除非被用戶代理的設置覆蓋。要指定UTF-8文本文件,則使用MIME類型text/plain;charset=UTF-8。

MIME類型不區分大小寫,但傳統上用小寫,但參數值除外,因為參數值的大小寫可能有或沒有特定的意義。

MIME有兩中類型,分別是discretemultipart

離散類型是代表單一文件或媒介的類型,如單一文本或音樂文件,或單一視頻。

多部分類型是指由多個組件組成的文件,每個組件都有自己獨立的MIME類型;或者,指封裝在一個事務中一起發送的多個文件。例如,電子郵件中多個附件就是一種多部分MIME類型。

我們看下常見的discrete類型:

  • application, 比如:application/octet-stream,application/pdf,application/pkcs8和application/zip等。
  • audioList, 比如:audio/mpeg,audio/vorbis。
  • font, 比如:font/woff,font/ttf和font/otf。
  • image,比如:image/jpeg,image/png和image/svg+xml。
  • model, 比如:model/3mf 和model/vml。
  • text,比如:text/plain, text/csv 和 text/html.
  • video,比如:video/mp4。
  • 常見的Multipart類型如下:

  • message,比如:message/rfc822和message/partial。
  • multipartList, 比如:multipart/form-data 和 multipart/byteranges。
  • 瀏覽器嗅探

    因為瀏覽器使用MIME類型,而不是文件擴展名來決定如何處理一個URL,所以Web服務器在響應的Content-Type頭中發送正確的MIME類型非常重要。如果沒有正確配置,瀏覽器很可能會誤解文件的內容,網站將無法正常運行,下載的文件也可能會被錯誤處理。

    為了解決這個問題,或者說是更好的用戶體驗,很多瀏覽器會進行MIME內容嗅探,也就是通過解析文件的內容,來猜測MIME類型的格式。

    不同的瀏覽器處理MIME嗅探的方式是不一樣的。但是他們都可能會產生嚴重的安全漏洞,因為有些MIME類型是可執行類型的,惡意攻擊者可以通過混淆MIME嗅探算法,從而使攻擊者可以進行網站運營者或用戶都沒有預料到的操作,如跨站腳本攻擊。

    如果不想瀏覽器端進行嗅探,可以在服務端的響應中設置 X-Content-Type-Options 頭,比如:

    X-Content-Type-Options: nosniff

    這個頭最早是在IE 8中支持的,不過現在所有的瀏覽器基本都支持這個head類型了。

    客戶端嗅探

    我們通常需要在JS中判斷瀏覽器是否是IE瀏覽器,然后做響應的處理:

    var isIEBrowser = false; if (window.ActiveXObject) {isIEBrowser = true; }// Or, shorter: var isIE = (window.ActiveXObject !== undefined);

    上面的例子就是非常簡單的客戶端嗅探,通過判斷window是否有ActiveXObject 這個屬性來確定這個瀏覽器是否是IE瀏覽器。

    本文已收錄于 http://www.flydean.com/content-sniffing/

    最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

    歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!

    總結

    以上是生活随笔為你收集整理的密码学系列之:内容嗅探的全部內容,希望文章能夠幫你解決所遇到的問題。

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