Có thể làm xáo trộn javascript không?

Cung cấp tệp JavaScript mà không làm xáo trộn, đơn giản có nghĩa là bất kỳ ai cũng có thể đọc được mã trong tệp. Vì vậy, nếu người đó hiểu JavaScript, mã nguồn của bạn sẽ được công khai ngay bây giờ. Vì vậy, nếu mã JavaScript hoạt động mà không có sự tương tác của máy chủ, ai đó có thể tải xuống HTML của trang của bạn, các tài nguyên (JS và CSS) và sẽ nhận được kết quả tương tự cục bộ. Vì vậy, nếu mã cũng có thể đọc được, người này có thể đánh cắp công việc của bạn và sửa đổi nó theo ý muốn của họ

Xem xét ví dụ sau về JavaScript (example.js). Mã này có thể dễ dàng đọc được bởi một người hiểu JavaScript, chúng tôi có một đối tượng người dùng nằm trong phạm vi một hàm và có một đối tượng công khai với các phương thức trong cửa sổ. Trong trường hợp này, một trong các phương pháp cho phép sửa đổi cấp độ người dùng trực tiếp bằng cách cung cấp cấp độ mới của nó làm đối số đầu tiên

(function(){
    let user = {
        level: 2,
        username: "OrangeJuice"
    };

    window.helpers = {
        updateUserLevel: function(newLevel){
            user.level = newLevel;
        },
        getUser: function(){
            return user;
        }
    };
})();

Bây giờ, hãy xem xét mã tương tự được làm xáo trộn với trình làm xáo trộn JavaScript trực tuyến này với mức che giấu mặc định

const _0x1fae = ['1657105ujfQrT', '783669zubyer', '2nExDeM', '4643ShsyfD', '658462ySUEuO', 'OrangeJuice', 'helpers', '343VmTHdZ', 'level', '1pimDeL', '43499Rqvyyb', '5039785gBYsCy', '515042fRMLUY'];
const _0x536b = function(_0x2e032f, _0x335d22) {
    _0x2e032f = _0x2e032f - 0xc3;
    let _0x1fae27 = _0x1fae[_0x2e032f];
    return _0x1fae27;
};
(function(_0x38eafd, _0x14ce8f) {
    const _0x1bb8d6 = _0x536b;
    while (!![]) {
        try {
            const _0x2d21cf = parseInt(_0x1bb8d6(0xc9)) * -parseInt(_0x1bb8d6(0xcd)) + parseInt(_0x1bb8d6(0xc7)) + parseInt(_0x1bb8d6(0xc5)) * -parseInt(_0x1bb8d6(0xc8)) + -parseInt(_0x1bb8d6(0xca)) + parseInt(_0x1bb8d6(0xcf)) * -parseInt(_0x1bb8d6(0xc6)) + parseInt(_0x1bb8d6(0xc3)) + parseInt(_0x1bb8d6(0xc4));
            if (_0x2d21cf === _0x14ce8f) break;
            else _0x38eafd['push'](_0x38eafd['shift']());
        } catch (_0x4bd5f4) {
            _0x38eafd['push'](_0x38eafd['shift']());
        }
    }
}(_0x1fae, 0xe2bf1), function() {
    const _0x1b84be = _0x536b;
    let _0x2b2698 = {
        'level': 0x2,
        'username': _0x1b84be(0xcb)
    };
    window[_0x1b84be(0xcc)] = {
        'updateUserLevel': function(_0x3c3c76) {
            const _0x1b5786 = _0x1b84be;
            _0x2b2698[_0x1b5786(0xce)] = _0x3c3c76;
        },
        'getUser': function() {
            return _0x2b2698;
        }
    };
}());

Nếu không biết mã ban đầu trông như thế nào, người đọc sẽ khó xác định rằng có một đối tượng trong cửa sổ có tên helpers. Như đã đề cập, đặc điểm đặc biệt của obfuscaators là mã vẫn hoạt động như mong đợi, nếu bạn đưa mã vào bảng điều khiển, bạn sẽ có thể tương tác với mã giống như mã ban đầu

Ưu điểm của việc làm xáo trộn JS

  • Ngăn chặn mọi người sao chép hoặc sửa đổi mã của bạn mà không được phép
  • JavaScript bị xáo trộn sẽ lớn hơn và khó hiểu hơn. Hầu hết các bộ làm xáo trộn sử dụng kỹ thuật làm phẳng luồng điều khiển, một kỹ thuật che giấu mã nguồn chia các khối cơ bản của mã nguồn thành các vòng lặp và các nhánh có điều kiện và đặt chúng bên trong một vòng lặp vô hạn duy nhất bằng một câu lệnh chuyển đổi, khiến mã khó theo dõi hơn
  • Chức năng chính xác, không phải vì mã khác nên nó sẽ hoạt động khác
  • Bảo vệ gỡ lỗi, hữu ích nếu bạn không muốn mọi người chỉ cần mở bảng điều khiển để xem điều gì đang xảy ra với JavaScript

Nhược điểm của việc làm xáo trộn JS

  • Mặc dù JavaScript đầu ra khó đọc hơn nhưng điều này không có nghĩa là không thể. Nếu ai đó dành đủ thời gian, tâm huyết và kiến ​​thức để đọc nó, thì cuối cùng, anh ta sẽ
  • Tốc độ mã của bạn có thể bị ảnh hưởng đặc biệt khi sử dụng mức che giấu cao
  • Kích thước mã của bạn cũng có thể tăng mạnh, điều này có thể ảnh hưởng đến thời gian tải trang web của bạn. Mặc dù thông thường, nếu bạn sử dụng GZIP để phân phối các tệp của mình, vì phần lớn mã bị lặp lại nên cuối cùng nó có thể được nén tốt

Khi nào bạn nên xáo trộn mã JavaScript của mình?

Điều kiện chính để sử dụng obfuscator là mã JavaScript có thể được lấy công khai, không ai có thể đọc được. Tôi biết, thật khó để xem xét rằng việc cung cấp JavaScript từ máy chủ của bạn khiến nó trở nên công khai ngay lập tức, vì vậy điều tối thiểu chúng tôi có thể làm là làm xáo trộn nó. Có một số ví dụ thực tế trong đó JavaScript của bạn phải được làm xáo trộn một cách bắt buộc

Bảo vệ Theme của bạn tại Themeforest

Bên trong một thị trường quan trọng của Mẫu trang web, rất quan trọng để bảo vệ công việc của bạn. Trong Themeforest, cần có một trang web hiển thị bản xem trước của mẫu mà bạn đang cố bán. Điều này có nghĩa là bạn sẽ phục vụ HTML, CSS và JS cho tác phẩm của mình. Vì vậy, nếu bạn không làm xáo trộn JavaScript của mình, BẤT CỨ AI có thể chỉ cần tải xuống các tài nguyên từ bản xem trước trang web của bạn và làm việc với tài nguyên đó mà không cần mua mẫu của bạn. Đặc biệt, nếu bạn đủ ngây thơ để phục vụ cùng một tài nguyên mà bạn đưa vào mẫu của mình

Không xuất bản bản xem trước chủ đề của bạn tại ThemeForest mà không làm xáo trộn mã nguồn của bạn. Một số obfuscator cũng cung cấp khả năng khóa JavaScript của bạn vào một miền. Điều này có nghĩa là nếu mã của bạn không được thực thi từ trang web demo của bạn. com, thì mã sẽ đưa ra một ngoại lệ, ngăn không cho nó được thực thi (hoàn hảo cho tình huống này)

Bảo vệ trò chơi JavaScript trong trình duyệt

Nếu bạn phát triển trò chơi điện tử trong trình duyệt với bất kỳ công cụ trò chơi JavaScript nào, thì chắc chắn bạn sẽ muốn bảo vệ mã khỏi bị đọc bởi những đứa trẻ tập lệnh hoặc ai đó đang cố phá vỡ các quy tắc trong trò chơi của bạn. Chắc chắn sẽ rất khó để hiểu nó, đặc biệt là vì mã của một trò chơi khá phức tạp và lớn hơn bất kỳ mã JavaScript thông thường nào chạy trên một trang web

Làm cách nào để làm xáo trộn mã JavaScript của bạn?

Có nhiều giải pháp để làm xáo trộn mã của bạn, tùy thuộc vào nhu cầu của bạn, bạn có thể

  • Làm xáo trộn JavaScript trực tuyến. JavaScriptObfuscator. trang web dev cho phép bạn làm xáo trộn JavaScript của mình trực tuyến, chỉ cần dán hoặc chọn nhiều tệp trực tiếp từ thiết bị của bạn và bạn sẽ nhận được phiên bản đã làm xáo trộn. Ưu điểm của trang web này là bạn có phiên bản nhúng của thư viện javascript-obfuscator trên web. Điều này có nghĩa là các tệp của bạn không được tải lên ở bất kỳ đâu, chúng bị xáo trộn bởi sức mạnh của chính thiết bị của bạn
  • Tích hợp che giấu với tác vụ xây dựng. ngày nay hầu hết mọi người sử dụng gulp, Webpack hoặc bất kỳ trình đóng gói nào để giữ cho mã của họ thống nhất. Bạn có thể tích hợp ở bước cuối cùng, quá trình mã hóa các tệp đầu ra được tạo bởi trình đóng gói của bạn (sau bộ khai thác nếu bạn sử dụng một tệp, nếu không, một phần của biện pháp bảo vệ có thể bị xóa khỏi quá trình mã hóa giống như mã chết). Bạn có thể làm điều đó với mô-đun javascript-obfuscator và có các plugin cho công cụ mà bạn sử dụng. webpack-obfuscator gulp-javascript-obfuscator,  và  grunt-contrib . Chúng tôi đã viết một hướng dẫn về cách xáo trộn mã JavaScript của bạn bằng Node. js ở đây. . We wrote a tutorial about how to obfuscate your JavaScript code with Node.js here.

Nếu bạn biết ưu điểm hoặc nhược điểm khác của việc sử dụng trình mã hóa để bảo vệ mã JavaScript của mình, vui lòng cho chúng tôi biết trong hộp nhận xét

Có thể mã hóa JavaScript không?

Bạn có thể làm xáo trộn nó, nhưng không có cách nào bảo vệ nó hoàn toàn .

Tôi có nên xáo trộn mã JavaScript của mình không?

Ưu điểm của JS làm xáo trộn . JavaScript bị xáo trộn sẽ lớn hơn và khó hiểu hơn. Prevent people from copying or modifying your code without authorization. The obfuscated JavaScript will be way larger and difficult to understand.

Làm cách nào để JavaScript không thể đọc được?

Không thể đọc được, có thể khó đọc hơn. Cuối cùng, trình duyệt của bạn sẽ phải đọc mã JS, đó là lý do tại sao "không đọc được" là không thể. khó đọc. Như đã chỉ ra trong giải pháp 1, thu nhỏ và che giấu là 2 kỹ thuật làm cho mã nguồn khó đọc hơn .

JavaScript bị xáo trộn có chậm hơn không?

Chắc chắn là nó làm chậm quá trình KHỞI TẠO mã .