最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript安全加密之禁止別人調(diào)試自己的前端頁面代碼實現(xiàn)

 更新時間:2023年08月06日 16:28:05   作者:極客飛兔  
這篇文章主要為大家介紹了JavaScript安全加密之如何禁止別人調(diào)試自己的前端頁面代碼實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

?? 為啥要禁止?

  • 由于前端頁面會調(diào)用很多接口,有些接口會被別人爬蟲分析,破解后獲取數(shù)據(jù)
  • 為了 杜絕 這種情況,最簡單的方法就是禁止人家調(diào)試自己的前端代碼

?? 無限 debugger

  • 前端頁面防止調(diào)試的方法主要是通過不斷 debugger 來瘋狂輸出斷點,因為 debugger 在控制臺被打開的時候就會執(zhí)行
  • 由于程序被 debugger 阻止,所以無法進行斷點調(diào)試,所以網(wǎng)頁的請求也是看不到的
  • 基礎(chǔ)代碼如下:
/**
* 基礎(chǔ)禁止調(diào)試代碼
*/
(() => {
    function ban() {
      setInterval(() => {
        debugger;
      }, 50);
    }
    try {
      ban();
    } catch (err) { }
})();

?? 無限 debugger 的對策

  • 如果僅僅是加上面那么簡單的代碼,對于一些技術(shù)人員而言作用不大
  • 可以通過控制臺中的 Deactivate breakpoints 按鈕或者使用快捷鍵 Ctrl + F8 關(guān)閉無限 debugger
  • 這種方式雖然能去掉礙眼的 debugger,但是無法通過左側(cè)的行號添加 breakpoint

?? 禁止斷點的對策

  • 如果將 setInterval 中的代碼寫在一行,就能禁止用戶斷點,即使添加 logpoint 為 false 也無用
  • 當然即使有些人想到用左下角的格式化代碼,將其變成多行也是沒用的
(() => {
  function ban() {
    setInterval(() => { debugger; }, 50);
  }
  try {
    ban();
  } catch (err) { }
})();

?? 忽略執(zhí)行的代碼

  • 通過添加 add script ignore list 需要忽略執(zhí)行代碼行或文件
  • 也可以達到禁止無限 debugger

?? 忽略執(zhí)行代碼的對策

  • 那如何針對上面操作的惡意用戶呢
  • 可以通過將 debugger 改寫成 Function("debugger")(); 的形式來應對
  • Function 構(gòu)造器生成的 debugger 會在每一次執(zhí)行時開啟一個臨時 js 文件
  • 當然使用的時候,為了更加的安全,最好使用加密后的腳本
// 加密前
(() => {
  function ban() {
    setInterval(() => {
      Function('debugger')();
    }, 50);
  }
  try {
    ban();
  } catch (err) { }
})();
// 加密后
eval(function(c,g,a,b,d,e){d=String;if(!"".replace(/^/,String)){for(;a--;)e[a]=b[a]||a;b=[function(f){return e[f]}];d=function(){return"\w+"};a=1}for(;a--;)b[a]&&(c=c.replace(new RegExp("\b"+d(a)+"\b","g"),b[a]));return c}('(()=>{1 0(){2(()=>{3("4")()},5)}6{0()}7(8){}})();',9,9,"block function setInterval Function debugger 50 try catch err".split(" "),0,{}));

?? 終極增強防調(diào)試代碼

  • 為了讓自己寫出來的代碼更加的晦澀難懂,需要對上面的代碼再優(yōu)化一下
  • 將 Function('debugger').call() 改成 (function(){return false;})['constructor']('debugger')['call']();
  • 并且添加條件,當窗口外部寬高和內(nèi)部寬高的差值大于一定的值 ,我把 body 里的內(nèi)容換成指定內(nèi)容
  • 當然使用的時候,為了更加的安全,最好加密后再使用
(() => {
  function block() {
    if (window.outerHeight - window.innerHeight > 200 || window.outerWidth - window.innerWidth > 200) {
      document.body.innerHTML = "檢測到非法調(diào)試,請關(guān)閉后刷新重試!";
    }
    setInterval(() => {
      (function () {
        return false;
      }
      ['constructor']('debugger')
      ['call']());
    }, 50);
  }
  try {
    block();
  } catch (err) { }
})();

以上就是JavaScript安全加密之禁止別人調(diào)試自己的前端頁面代碼實現(xiàn)的詳細內(nèi)容,更多關(guān)于JavaScript前端頁面禁止調(diào)試的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS使用對象的defineProperty進行變量監(jiān)控操作示例

    JS使用對象的defineProperty進行變量監(jiān)控操作示例

    這篇文章主要介紹了JS使用對象的defineProperty進行變量監(jiān)控操作,結(jié)合實例形式分析了對象defineProperty方法的功能及簡單使用技巧,需要的朋友可以參考下
    2019-02-02
  • JavaScript實現(xiàn)Flash炫光波動特效

    JavaScript實現(xiàn)Flash炫光波動特效

    JavaScript寫的炫光波動效果,看到一些Flash效果不錯,用JS也模擬一下,還有很多不完善的地方,給各位參考參考。
    2015-05-05
  • ES6所改良的javascript“缺陷”問題

    ES6所改良的javascript“缺陷”問題

    這篇文章主要介紹了ES6所改良的javascript“缺陷”問題的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • 原生JS實現(xiàn)的多個彩色小球跟隨鼠標移動動畫效果示例

    原生JS實現(xiàn)的多個彩色小球跟隨鼠標移動動畫效果示例

    這篇文章主要介紹了原生JS實現(xiàn)的多個彩色小球跟隨鼠標移動動畫效果,涉及javascript事件響應、頁面元素屬性動態(tài)修改及隨機數(shù)應用等相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 利用原生JS自動生成文章標題樹的實例

    利用原生JS自動生成文章標題樹的實例

    網(wǎng)上關(guān)于生成文章標題樹的示例很多,這篇文章介紹的是利用原生JS實現(xiàn)自動生成文章標題樹,實現(xiàn)過程很簡單,有需要的可以參考借鑒。
    2016-08-08
  • element el-input 刪除邊框的實現(xiàn)

    element el-input 刪除邊框的實現(xiàn)

    本文主要介紹了element el-input 刪除邊框的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • js原生日歷的實例(推薦)

    js原生日歷的實例(推薦)

    下面小編就為大家?guī)硪黄猨s原生日歷的實例(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • JS刪除String里某個字符的方法

    JS刪除String里某個字符的方法

    這篇文章主要介紹了JS刪除String里某個字符的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • js+canvas簡單繪制圓圈的方法

    js+canvas簡單繪制圓圈的方法

    這篇文章主要介紹了js+canvas簡單繪制圓圈的方法,涉及JavaScript調(diào)用canvas組件實現(xiàn)簡單圖形繪制的相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • Bootstrap每天必學之前端開發(fā)框架

    Bootstrap每天必學之前端開發(fā)框架

    Bootstrap每天必學之前端開發(fā)框架,今天這篇文章就帶著大家了解認識當下最流行的前端開發(fā)框架Bootstrap,bootstrap深受大家喜愛的原因到底是什么呢,我們一探究竟。
    2015-11-11

最新評論

阳新县| 屯昌县| 保康县| 新闻| 石家庄市| 嘉善县| 榆树市| 巴彦淖尔市| 正蓝旗| 莫力| 襄樊市| 长岛县| 乌审旗| 黄梅县| 鹤岗市| 临朐县| 威远县| 四平市| 东阿县| 大方县| 高台县| 卫辉市| 于都县| 团风县| 昌江| 新巴尔虎左旗| 清丰县| 安丘市| 陇西县| 二连浩特市| 高邑县| 海南省| 乐至县| 淮北市| 南郑县| 郎溪县| 乌海市| 东辽县| 资兴市| 固原市| 宜君县|