obfuscate là gì

Khi tải về những cỗ tủ sách bên trên Internet (đặc biệt là tủ sách Jquery, Javascript), thỉnh phảng phất các bạn sẽ có được những tệp tin rất rất nhỏ, nội dung bên phía trong thì bị minify và ko có một chút meaning nào là. Đó đó là chuyên môn Obfuscated code.

Obfuscated code là gì?

Đây là 1 chuyên môn nhằm vấn đáp mang lại thắc mắc nhưng mà bản thân thông thường gặp gỡ của chúng ta developer mới mẻ vô nghề: “Làm sao nhằm lấp ỉm source code của mình?”. Hãy test coi ví dụ phía dưới:

Bạn đang xem: obfuscate là gì

Source:

function redirectUrl(url, selectorString) {
    if (url !== '') {
        if (selectorString === null || (selectorString !== null && $(selectorString).val() != url)) {
            window.location.replace(url);
        }
    }
}
function removeData(row) {
    row.addClass("warning");
    row.fadeOut(400, function () {
        row.remove();
    });
}
var delay = (function () {
    var timer = 0;
    return function (callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();

Obfuscated code:

eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c])}}return p}('1 g(3,4){6(3!==''){6(4===a||(4!==a&&$(4).d()!=3)){f.b.c(3)}}}1 e(2){2.l("n");2.o(h,1(){2.p()})}7 m=(1(){7 5=0;i 1(8,9){j(5);5=k(8,9)}})();',26,26,'|function|row|url|selectorString|timer|if|var|callback|ms|null|location|replace|val|removeData|window|redirectUrl|400|return|clearTimeout|setTimeout|addClass|delay|warning|fadeOut|remove'.split('|'),0,{}))

Obfuscated code format:

eval(function (p, a, c, k, e, d) {
    e = function (c) {
        return c.toString(36)
    };
    if (!''.replace(/^/, String)) {
        while (c--) {
            d[c.toString(a)] = k[c] || c.toString(a)
        }
        k = [function (e) {
            return d[e]
        }];
        e = function () {
            return '\w+'
        };
        c = 1
    }
    ;
    while (c--) {
        if (k[c]) {
            p = p.replace(new RegExp('\b' + e(c) + '\b', 'g'), k[c])
        }
    }
    return p
}('1 g(3,4){6(3!==''){6(4===a||(4!==a&&$(4).d()!=3)){f.b.c(3)}}}1 e(2){2.l("n");2.o(h,1(){2.p()})}7 m=(1(){7 5=0;i 1(8,9){j(5);5=k(8,9)}})();', 26, 26, '|function|row|url|selectorString|timer|if|var|callback|ms|null|location|replace|val|removeData|window|redirectUrl|400|return|clearTimeout|setTimeout|addClass|delay|warning|fadeOut|remove'.split('|'), 0, {}))

Tại sao rất cần được Obfuscated code?

  • Dung lượng code sẽ tiến hành hạ xuống.
  • Trong Javascript, tiếp tục thực hiện thời hạn vận tải xuống đáng chú ý.
  • Khi code được Obfuscated tiếp tục rất rất khó khăn nhằm hòn đảo ngược lại format thuở đầu.

Các chúng ta cũng có thể thấy, với Obfuscated code, nó không chỉ chỉ minify (cắt vứt những đoạn xuống dòng sản phẩm, vệt cơ hội ko quan trọng thực hiện rời dung tích tệp tin, tiết kiệm ngân sách và chi phí băng thông) nhưng mà nó còn thay cho thay đổi luôn luôn cả thương hiệu lớp, thương hiệu hàm, thương hiệu phát triển thành,… trở nên những kí tự động giản dị và đơn giản bất nghĩa (VD: a(), var b,…). Vậy nên Obfuscated code còn được nghe biết với cái thương hiệu Việt là kỹ thuật thực hiện rối code: người không giống hoàn toàn có thể giành được code của doanh nghiệp tuy nhiên khó khăn hoàn toàn có thể hiểu không còn toàn cỗ ý nghĩa sâu sắc code nhưng mà chúng ta ghi chép 😉 Obfuscated code được sử dụng vô thật nhiều ngữ điệu chứ không riêng gì Javascript. Thông thường so với những source public bọn họ tiếp tục chỉ minify nhằm rời dung tích tệp tin Lúc load. Còn Obfuscated chỉ sử dụng Lúc mong muốn nâng cao hiệu suất không chỉ có thế và nhất là dùng để làm ỉm code. Giấu code ở đó cũng ko trọn vẹn là ko dịch ngược lại được, song tiếp tục tốn không hề ít thời hạn.

Obfuscation == Encryption?

Không, obfuscation != encryption.

  • Trong JavaScript, trình duyệt hoàn toàn có thể thực thi đua encrypted code, trong những khi trình duyệt tiếp tục thực thi đua obfuscated code.
  • Encrypted code luôn luôn cần thiết giải thuật sẽ được thực thi đua.
  • Obfuscated code ko đòi hỏi khử tài liệu nhằm thực thi đua.

Khi ghi chép Obfuscator cần thiết chú ý:

Xem thêm: darling là gì

-Chỉ thay cho thay đổi những thương hiệu riêng rẽ, bất biến kể từ khóa, thương hiệu mệnh lệnh, hoặc những API của hệ thống

-Tránh xung đột thương hiệu. Ví dụ: nếu như thay cho thương hiệu lớp và thương hiệu phát triển thành như là nhau, lịch trình hoàn toàn có thể chạy rất khác thông thường và thậm chí là là không hiểu biết nó đang khiến gì

-Nhất quán. Khi thay cho thay tên nên thay cho thay đổi toàn cỗ những tệp tin mối cung cấp với chứa chấp nằm trong đối tượng người sử dụng ê. Ví dụ: tệp tin abc.jsp chứa chấp lớp thương hiệu ABC thì Lúc thay tên lớp ABC, toàn bộ những tệp tin không giống với sử dụng lớp ABC cũng nên thay cho thay đổi theo đòi.

-Đặt thương hiệu mới mẻ càng cộc càng đảm bảo chất lượng. Làm như vậy nhằm dịch mã thời gian nhanh rộng lớn, nâng tốn công sức của con người mang lại trình dịch

-Lọai vứt dư thừa

Làm sao nhằm Obfuscated code?

Xem thêm: america là gì

Tất nhiên chúng ta cũng có thể tự động thực hiện thủ công. Thôi, tốt nhất có thể là sử dụng những cỗ tủ sách, ứng dụng hoặc một trong những tools online vì như thế những khí cụ này đang được ghi chép nhằm hoàn toàn có thể Obfuscated code của doanh nghiệp một cơ hội tối ưu nhất. Một số tools online:

  • JavaScript HTML Code/Text Obfuscator
  • Online Javascript Obfuscator DaftLogic
  • Jsobfuscate

Nếu code của doanh nghiệp là vì như thế xã hội thì chúng ta chỉ việc minify nhằm rời dung tích tệp tin thôi, còn nếu như vẫn mong muốn ỉm code thì Obfuscated code là 1 lựa lựa chọn tối ưu cho chính mình. Cám ơn chúng ta tiếp tục phát âm bài xích viết

Tài liệu tham ô khảo:

  • https://obfuscator.io/
  • http://soaptek.blogspot.com/2013/01/tim-hieu-ve-minified-obfuscated-code.html