JS題 實際問題

  • 點擊穿透

    這是因為在移動端瀏覽器,事件執(zhí)行的順序是touchstart > touchend > click
    而click事件有300ms的延遲,當(dāng)touchstart事件把B元素隱藏之后,隔了300ms,瀏覽器觸發(fā)了click事件,但是此時B元素不見了,所以該事件被派發(fā)到了A元素身上
    如果A元素是一個鏈接,那此時頁面就會意外地跳轉(zhuǎn)
    
  • 事件機制

    捕獲,到達目標(biāo),冒泡
    
    現(xiàn)代瀏覽器:addEventListener / evt.target,無on,有捕獲和冒泡,參數(shù)3控制在捕獲還是冒泡階段觸發(fā)事件
    舊IE:attachEvent / event.srcElement,帶on,只有冒泡階段
    
  • XSS

    發(fā)生在:
    1. 數(shù)據(jù)從一個不可靠的鏈接進入到一個web應(yīng)用程序
    2. 沒有過濾掉惡意代碼的動態(tài)內(nèi)容被發(fā)送給web用戶
    
    前端防范:
    1. 字符串類型的數(shù)據(jù),需要針對<、>、/、’、”、&五個字符進行實體化轉(zhuǎn)義
    function encodeHTML (a) {
      return String(a)
        .replace(/&/g, "&amp;")
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&#39;");
    };
    2. 在響應(yīng)頭或頁面<meta>內(nèi)設(shè)置 Content-Security-Policy
    3. 設(shè)置響應(yīng)頭的 HttpOnly ,使得 cookie 不能使用 JavaScript 經(jīng)由  Document.cookie 屬性、XMLHttpRequest 和  Request APIs 進行訪問
    
    后端防范:過濾所有的‘<’和‘>’字符,確保從后端而來的數(shù)據(jù)并不帶有任何的html標(biāo)簽,xss的危險在于有不可預(yù)料的前端腳本,但是值得注意的是,不單只有script標(biāo)簽是可以運行腳本的,任何的html標(biāo)簽都可以加上類似onclick,onload這樣的事件也都可以運行腳本,所以需要過濾所有的‘<’和‘>’字符
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 相關(guān)知識點 移動端、 適配(兼容)、 ios點擊事件300ms延遲、 點擊穿透、 定位失效...... 問題&解決...
    sandisen閱讀 25,874評論 3 67
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined、Nul...
    極樂君閱讀 5,878評論 0 106
  • 不知你們是否有著同樣的感受,就是每天時刻拿著手機,明明沒消息也沒電話,卻總是忍不住去點開看看,夜晚躺在床上,明明說...
    貝希子閱讀 280評論 3 0
  • 簡介 本文內(nèi)容摘自《深入理解Nginx》第二版 1.6節(jié)。 命令行控制 默認路徑 默認安裝路徑是/usr/loca...
    神農(nóng)民閱讀 533評論 0 1

友情鏈接更多精彩內(nèi)容