<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          禁止別人調(diào)試自己的前端頁(yè)面代碼

          共 4588字,需瀏覽 10分鐘

           ·

          2023-09-01 14:27

          大廠技術(shù)  高級(jí)前端  Node進(jìn)階

          點(diǎn)擊上方 程序員成長(zhǎng)指北,關(guān)注公眾號(hào)

          回復(fù)1,加入高級(jí)Node交流群

          ?? 為啥要禁止?

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

          ?? 無(wú)限 debugger

          • 前端頁(yè)面防止調(diào)試的方法主要是通過(guò)不斷 debugger 來(lái)瘋狂輸出斷點(diǎn),因?yàn)?debugger 在控制臺(tái)被打開(kāi)的時(shí)候就會(huì)執(zhí)行
          • 由于程序被 debugger 阻止,所以無(wú)法進(jìn)行斷點(diǎn)調(diào)試,所以網(wǎng)頁(yè)的請(qǐng)求也是看不到的
          • 基礎(chǔ)代碼如下:
          /**
          * 基礎(chǔ)禁止調(diào)試代碼
          */

          (() => {
           function ban({
             setInterval(() => {
               debugger;
             }, 50);
           }
           try {
             ban();
           } catch (err) { }
          })();
          基礎(chǔ)禁止調(diào)試

          ?? 無(wú)限 debugger 的對(duì)策

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

          ?? 禁止斷點(diǎn)的對(duì)策

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

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

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

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

          • 那如何針對(duì)上面操作的惡意用戶呢
          • 可以通過(guò)將 debugger 改寫成 Function("debugger")(); 的形式來(lái)應(yīng)對(duì)
          • Function 構(gòu)造器生成的 debugger 會(huì)在每一次執(zhí)行時(shí)開(kāi)啟一個(gè)臨時(shí) js 文件
          • 當(dāng)然使用的時(shí)候,為了更加的安全,最好使用加密后的腳本
          // 加密前
          (() => {
            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,{}));
          解決對(duì)策

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

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

          作者:極客飛兔

          鏈接:https://juejin.cn/post/7262175454714626108

          Node 社群

              
              


          我組建了一個(gè)氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對(duì)Node.js學(xué)習(xí)感興趣的話(后續(xù)有計(jì)劃也可以),我們可以一起進(jìn)行Node.js相關(guān)的交流、學(xué)習(xí)、共建。下方加 考拉 好友回復(fù)「Node」即可。

             “分享、點(diǎn)贊、在看” 支持一下

          瀏覽 3421
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  苏畅md一区二区三区在线观看 | 日韩中文字幕视频在线 | 亚洲在线黄片 | 免费日逼无码片 | 国产色婷婷AV |