Mã JavaScript có hiển thị trong trình duyệt không?

Một cách mà JavaScript thường được sử dụng là ẩn hoặc hiển thị nội dung dựa trên hành vi của người dùng. Ví dụ: người dùng có thể chọn một tùy chọn khi điền vào biểu mẫu trực tuyến và lựa chọn của họ có thể khiến các trường biểu mẫu liên quan khác xuất hiện. Trong bài học này, bạn sẽ sử dụng CSS và Javascript để hiển thị và ẩn đồng hồ mà bạn đã tạo

Show

Kết quả của người học

Khi hoàn thành bài tập này

  • bạn sẽ có thể sử dụng CSS để ẩn và hiển thị nội dung
  • bạn sẽ có thể sử dụng JavaScript để thay đổi và các thuộc tính CSS của phần tử HTML

Các hoạt động

Thông lệ phổ biến trên web ngày nay là ẩn nội dung khỏi người dùng cho đến khi cần thiết. Trong bài này các bạn sẽ ẩn đồng hồ đi, sau đó thêm link mà nếu click vào sẽ hiện đồng hồ

mở javascript. html trong cả trình soạn thảo văn bản và trình duyệt web của bạn. Chuyển đến biểu định kiểu mà bạn đã tạo cho div#clock trong bài học trước. Thêm thuộc tính sau vào biểu định kiểu

Bây giờ làm mới trang của bạn trong trình duyệt của bạn. Chuyện gì đã xảy ra thế? . Đây là một trong một số cách để ẩn nội dung bằng CSS. Để hiển thị lại phần tử, bạn sẽ thay đổi thuộc tính này thành

Tuy nhiên, trong trường hợp này, chúng tôi chỉ muốn hiển thị phần tử nếu người dùng yêu cầu cụ thể. Vì vậy, chúng tôi sẽ phải thay đổi kiểu động, sử dụng JavaScript, được kích hoạt bởi sự kiện onclick

Đầu tiên, thêm phần tử mà bạn muốn người dùng nhấp vào

Hiển thị đồng hồ

Lưu ý rằng nút này về cơ bản giống như nút bạn đã tạo trong Bài 1 để hiển thị cảnh báo. Có một sự khác biệt quan trọng mặc dù. Nút này có thuộc tính id. Đó là để bạn có thể truy cập nó dễ dàng bằng JavaScript (bạn sẽ hiểu tại sao trong giây lát)

Bây giờ bạn đã có một nút mà khi được nhấp vào sẽ gọi hàm toggleClock(), bạn cần tạo một hàm toggleClock(). Đây là chức năng đó - chỉ cần thêm nó vào phần tập lệnh hiện có ở đầu trang web của bạn

  function toggleClock() {
    // get the clock
    var myClock = document.getElementById('clock');

    // get the current value of the clock's display property
    var displaySetting = myClock.style.display;

    // also get the clock button, so we can change what it says
    var clockButton = document.getElementById('clockButton');

    // now toggle the clock and the button text, depending on current state
    if (displaySetting == 'block') {
      // clock is visible. hide it
      myClock.style.display = 'none';
      // change button text
      clockButton.innerHTML = 'Show clock';
    }
    else {
      // clock is hidden. show it
      myClock.style.display = 'block';
      // change button text
      clockButton.innerHTML = 'Hide clock';
    }
  }

Trong hàm toggleClock() mới này, bạn đang sử dụng JavaScript để truy xuất phần tử đồng hồ, lấy giá trị hiện tại của kiểu hiển thị của nó, sau đó kiểm tra nó. Nếu màn hình hiện đang được đặt thành "khối", đồng hồ sẽ hiển thị, vì vậy bạn thay đổi màn hình thành "không" để ẩn đồng hồ. Nếu đồng hồ đã bị ẩn, bạn thay đổi hiển thị thành "chặn" để hiển thị lại. Trong khi bạn đang chuyển đổi qua lại màn hình của đồng hồ từ "khối" thành "không", bạn cũng đang thay đổi văn bản (HTML bên trong) trên nút đồng hồ, sao cho luân phiên giữa "Hiển thị đồng hồ" và "Ẩn đồng hồ", tùy thuộc vào

Tất cả đã được làm xong?

Kiểm tra trang web của bạn và đảm bảo rằng bạn có thể hiển thị và ẩn đồng hồ bằng nút mới. Ngoài ra, hãy đảm bảo văn bản của nút thay đổi từ "Hiển thị đồng hồ" thành "Ẩn đồng hồ" khi thích hợp. Chia sẻ trang web của bạn với người hướng dẫn của bạn. Nếu tất cả đều ổn, hãy chuyển sang bài học tiếp theo

Ngày nay, hầu hết tất cả các trang web đều chứa JavaScript, một ngôn ngữ lập trình kịch bản chạy trên trình duyệt web của khách truy cập. Nó làm cho các trang web hoạt động cho các mục đích cụ thể và nếu bị tắt vì lý do nào đó, nội dung hoặc chức năng của trang web có thể bị hạn chế hoặc không khả dụng. Tại đây, bạn có thể tìm thấy hướng dẫn về cách bật (kích hoạt) JavaScript trong năm trình duyệt được sử dụng phổ biến nhất

Nếu bạn không đề phòng với mã JavaScript của mình, thì bạn đang tạo điều kiện dễ dàng cho bất kỳ ai muốn sao chép mã đó. Nhưng nếu quy trình lập trình của bạn chỉ cần một cú nhấp chuột, những kẻ tấn công sẽ thích sao chép phần mềm của đối thủ cạnh tranh hơn. Bot và những kẻ bất lương khác đang truy cập internet để lấy thông tin đăng nhập AWS hoặc Azure thường không bận tâm đến mã bị xáo trộn – thông tin đăng nhập của trang web tiếp theo cũng có thể được sử dụng để khai thác bitcoin và có thể được thu hoạch dễ dàng hơn

Làm xáo trộn JavaScript từng rất phức tạp. Tuy nhiên, quá trình này đã trở nên dễ dàng hơn đáng kể trong vài năm qua. Ngày nay, ngay cả các công ty nhỏ cũng có thể và nên bảo vệ mã của họ khỏi những con mắt tò mò. Trong một số trường hợp, việc bảo mật chỉ là một lệnh gọi của Nút. gói js đi

Các bước sau đây giới thiệu một trình mã hóa JavaScript thường được sử dụng và cũng xem xét một số chủ đề khác liên quan đến sự cố hiện tại

  • Phần mềm diệt vi-rút tốt nhất (mở trong tab mới)
  • 15 công cụ JavaScript cần thiết (mở trong tab mới)

01. kiểm tra phiên bản

Trình mã hóa JavaScript của chúng tôi tồn tại trong môi trường thời gian chạy Node. Hãy để chúng tôi bắt đầu bằng cách kiểm tra các phiên bản được sử dụng. Đầu ra bên dưới cung cấp trạng thái phiên bản được tìm thấy trên máy trạm thực sự của bạn được sử dụng cho các bước sau

tamhan@tamhan-thinkpad:~$ node --version
v8.12.0
tamhan@tamhan-thinkpad:~$ npm --version
6.4.1

02. cài đặt chương trình

Javascript-obfuscator nên được cài đặt vào bộ nhớ cache lắp ráp chung của máy trạm của bạn. Gọi npm với tham số -g và đừng quên cung cấp quyền siêu người dùng – quá trình triển khai thực tế sẽ được thực hiện trong vài giây

tamhan@tamhan-thinkpad:~$ sudo npm install -g 
javascript-obfuscator
[sudo] password for tamhan: 
. . .

+ [email protected]
added 103 packages from 162 contributors 
in 4.4s

03. Tạo một mẫu

Kiểm tra che giấu hoạt động tốt nhất nếu chúng tôi có một số mã 'thực'. Vì vậy, chúng ta hãy bắt đầu với một trang web HTML nhỏ. Nó tải một tệp JavaScript có tên worker. js, khai báo một nút và chứa một đoạn script nội tuyến nhỏ. Khi nó được tải trong trình duyệt, hãy nhấp vào nút để hiển thị hộp văn bản



	 
	
	 

04. Thêm một số mã

Người làm việc. js bắt đầu với một biến chuỗi. Chúng là một mục tiêu tấn công cổ điển – nếu ROM được giải mã, trình biên dịch chương trình thường bắt đầu bằng cách tìm kiếm các bảng chứa các chuỗi chuỗi. Hơn nữa, mã hóa được thực hiện bằng cách sử dụng một tập hợp các biến có tên rất 'biết nói'

var myString = "Hello from Future plc"

function doTheTrick(){
	var chiffrat;
	chiffrat = rot13(myString);
	return chiffrat;
}

05. Thực hiện mã hóa

Vì đây không phải là mã hóa 101, chúng ta nên giải quyết bằng một mật mã thay thế tương đối đơn giản. ROT13 không khó nhưng có thể lập trình khá dài dòng. Việc triển khai Dsoares (opens in new tab) đi kèm với một tập hợp các biến 'nói' và cung cấp nhiều thông tin cho bộ làm xáo trộn của chúng ta.

function rot13(str) { 
	var re = new RegExp("[a-z]", "i");
	var min = 'A'.charCodeAt(0);
	var max = 'Z'.charCodeAt(0);
	var factor = 13;
	var result = "";
	str = str.toUpperCase();
  
	for (var i=0; i

06. xáo trộn đầu tiên

Thực hiện chạy che giấu mã rất đơn giản. Gọi javascript-obfuscator và chuyển vào một dấu chấm để yêu cầu chương trình hoạt động trên tất cả các tệp được tìm thấy trong thư mục làm việc hiện tại. Điều này cho thấy kết quả trên máy trạm IBM của tác giả

tamhan@tamhan-thinkpad:~/FutureObfuscate/
code$ javascript-obfuscator .

07. Chuyển hướng đầu ra

Kích hoạt các tệp trực tiếp vào thư mục chứa là không hiệu quả, vì tên phải được thay đổi trước khi chúng có thể được sử dụng. Một cách tốt hơn liên quan đến việc sử dụng tham số đầu ra. Nếu javascript-obfuscator tìm thấy nó, chương trình sẽ tạo một thư mục con trong thư mục làm việc hiện tại và kết quả công việc của nó ở đó

tamhan@tamhan-thinkpad:~/FutureObfuscate/code$
javascript-obfuscator . --output ./obfusca

08. Phân tích kết quả

Thật kinh khủng, nhưng nó có thể tồi tệ hơn(mở trong tab mới)

Đi sâu vào thư mục 'obfusca' và mở phiên bản worker mới. js để bạn mãn nhãn với sự ghê tởm được hiển thị kèm theo bước này. Định dạng của mã bị đọc sai. Tuy nhiên, tên phương thức vẫn giữ nguyên, vì chúng cần thiết cho các lệnh gọi bên ngoài. Hơn nữa, các chuỗi hiện nằm trong một mảng mà kẻ tấn công có thể thu thập chúng một cách thuận tiện

________số 8

09. Ngăn chặn thu hoạch chuỗi

Javascript-obfuscator đi kèm với một loạt các thuật toán xáo trộn chuỗi, có thể được định cấu hình bằng cách sử dụng --string-array-encoding. Hãy nhớ rằng thư mục đầu ra phải được làm trống trước mỗi lần gọi, bởi vì quên làm như vậy sẽ dẫn đến việc làm xáo trộn 'đệ quy' các tệp đầu ra từ lần chạy trước

tamhan@tamhan-thinkpad:~/FutureObfuscate/code$
javascript-obfuscator . --output ./obfusca 
--string-array-encoding base64

10. Nhìn lại kết quả

Tại thời điểm này, đầu ra obfuscaators của bạn trông khác – mảng ở đầu tệp bây giờ khó đọc hơn nhiều. Tuy nhiên, điều này không giải quyết được mọi vấn đề. Nếu bạn thực hiện một vài chu kỳ che giấu, cuối cùng bạn sẽ nhận được đánh dấu tương tự như chu kỳ đi kèm với bước này

tamhan@tamhan-thinkpad:~$ node --version
v8.12.0
tamhan@tamhan-thinkpad:~$ npm --version
6.4.1
0

11. Hiểu ngẫu nhiên

Obfuscator hoạt động trong trường áp lực giữa hiệu suất cao và bảo vệ mã. Một cách để giải quyết vấn đề liên quan đến các yếu tố 'ngẫu nhiên hóa'. Các obfuscation tốn kém thời gian chạy không được thêm vào tất cả các nút mà chỉ vào một tập hợp con. Việc phát hiện xem các nút có bị ảnh hưởng hay không thường được thực hiện thông qua một bộ tạo số ngẫu nhiên, có thể điều chỉnh độ nhạy của nó

12. Đi sau chuỗi

Trình tạo số ngẫu nhiên được đề cập ở trên phát ra các số từ 0 đến 1. Nếu số lớn hơn ngưỡng, việc sửa đổi sẽ không diễn ra. Đặt stringArrayThreshold thành một giá trị có nghĩa là tất cả các số đều nhỏ hơn ngưỡng, đảm bảo rằng mỗi và mọi chuỗi đều bị xáo trộn

tamhan@tamhan-thinkpad:~$ sudo npm install -g 
javascript-obfuscator
[sudo] password for tamhan: 
. . .

+ [email protected]
added 103 packages from 162 contributors 
in 4.4s
0

13. Tiêm mã ngẫu nhiên

Các công cụ phân tích như JSNice kiếm được lợi nhuận từ việc có một cơ sở mã nhỏ. Cho rằng dù sao javascript-obfuscator cũng phá mã thành AST, nên không có gì phản đối việc chèn 'mã rác' một cách nhanh chóng. Vì tính năng này làm tăng thêm đáng kể nên các nhà phát triển phải kích hoạt nó theo cách thủ công thông qua hai tham số được hiển thị bên cạnh.

tamhan@tamhan-thinkpad:~$ sudo npm install -g 
javascript-obfuscator
[sudo] password for tamhan: 
. . .

+ [email protected]
added 103 packages from 162 contributors 
in 4.4s
1

14. tận hưởng sự hỗn loạn

Chạy obfuscator với cả hai bộ --dead-code-injection true và --dead-code-injection-threshold 1 dẫn đến kích thước tệp khoảng 2. 5KB. Cố gắng làm đẹp mã dẫn đến một bức tường hầu như không thể giải mã được của JavaScript chủ yếu là tautological

15. Tích cực sửa đổi luồng chương trình

Phá mã thành AST cho phép chuyển đổi sâu. Đặt thuộc tính controlFlowFlattening thành true cho chương trình biết rằng nó có thể hủy các lệnh gọi hàm nội tuyến. Điều này dẫn đến việc mở rộng đáng kể mã được tạo – hãy nhớ rằng kết quả có thể đạt hiệu suất 150 phần trăm

16. Làm phiền trình gỡ lỗi

Đồ tạo tác từ quá trình gỡ lỗi là món quà tuyệt vời nhất thế giới dành cho tin tặc. Một vài cuộc gọi đến bàn điều khiển. log() và những người bạn của nó có thể cung cấp cho kẻ tấn công thông tin có giá trị về những gì xảy ra bên trong chương trình – một ví dụ điển hình là đoạn trích được hiển thị

tamhan@tamhan-thinkpad:~$ sudo npm install -g 
javascript-obfuscator
[sudo] password for tamhan: 
. . .

+ [email protected]
added 103 packages from 162 contributors 
in 4.4s
2

17. Đánh giá các vấn đề kỹ thuật

Chúng ta có thể cố gắng xáo trộn lại chương trình bằng lệnh bên dưới. Nó vô hiệu hóa tính năng lưu trữ chuỗi và sẽ vô hiệu hóa ghi nhật ký bảng điều khiển thông qua chuyển hướng

tamhan@tamhan-thinkpad:~$ sudo npm install -g 
javascript-obfuscator
[sudo] password for tamhan: 
. . .

+ [email protected]
added 103 packages from 162 contributors 
in 4.4s
3

18. Chơi game mèo vờn chuột

Obfuscator và các nhà cung cấp trình duyệt đấu tranh lâu dài và gay gắt về chức năng trình gỡ lỗi. Do đó, các biện pháp 'tích cực', chẳng hạn như chuyển hướng bảng điều khiển của bộ ngắt dòng chương trình được hiển thị kèm theo bước này, thường không hoạt động lâu dài

tamhan@tamhan-thinkpad:~$ sudo npm install -g 
javascript-obfuscator
[sudo] password for tamhan: 
. . .

+ [email protected]
added 103 packages from 162 contributors 
in 4.4s
4

19. Làm xáo trộn trực tuyến nhanh chóng

Cài đặt toàn bộ Node. js để làm xáo trộn một hoặc hai tệp là vô nghĩa. Truy cập obfuscator. io (mở trong tab mới) để truy cập phiên bản trực tuyến của chương trình có trong trình duyệt của bạn. Các hộp kiểm và tổ hợp bên dưới đầu vào chính cho phép bạn sửa đổi hành vi của chương trình như đã nêu trong các bước ở trên.

20. Tìm hiểu thêm

Nhấp để xem tất cả các thông số bạn cần(mở trong tab mới)

Nhóm nhà phát triển duy trì tài liệu tương đối chi tiết giải thích cách các tham số dòng lệnh khác nhau tương tác với nhau. Chỉ cần truy cập phần đầu tại đây (mở trong tab mới) nếu đầu ra 'trợ giúp ngắn' hiển thị ở trên không giúp bạn đạt được mục tiêu của mình.

21. Kẻ thù truyền kiếp của obfuscator

JS Nice là một cách dễ dàng để khiến mã của bạn không thể đọc được(mở trong tab mới)

ETH Zurich cung cấp dịch vụ giải mã nhiễu được lưu trữ tại jsnice. org (mở trong thẻ mới) . Nó sử dụng mạng thần kinh và cơ sở dữ liệu kiến ​​thức được tạo thành từ mã hiện có để xác định tên biến. Mặc dù việc tạo định dạng thường hoạt động khá tốt, nhưng một số tên - chẳng hạn như pixelSizeTargetMax trong quy trình mã hóa đi kèm với bước này - có thể khá thú vị.

tamhan@tamhan-thinkpad:~$ sudo npm install -g 
javascript-obfuscator
[sudo] password for tamhan: 
. . .

+ [email protected]
added 103 packages from 162 contributors 
in 4.4s
5

Generate, hội nghị giành giải thưởng dành cho các nhà thiết kế web, sẽ trở lại NYC vào ngày 24-25 tháng 4. Để đặt vé truy cập

JavaScript có hiển thị trong trình duyệt không?

Mã javascript hiển thị trên trình duyệt .

Mã JavaScript có hiển thị cho người dùng không?

Dành cho mã chương trình thực thi trên máy chủ web. Không, người dùng cuối hoàn toàn không thể nhìn thấy mã này. Đối với mã chương trình thực thi trong trình duyệt web (cụ thể là HTML, CSS và JavaScript). Có, người dùng cuối phải có quyền truy cập vào mã này để trình duyệt chạy mã .

Làm cách nào để ẩn mã nguồn JavaScript trong trình duyệt?

kiểm tra phiên bản. Trình mã hóa JavaScript của chúng tôi tồn tại trong môi trường thời gian chạy Node. .
cài đặt chương trình. Javascript-obfuscator nên được cài đặt vào bộ nhớ cache lắp ráp chung của máy trạm của bạn. .
Tạo một mẫu. .
Thêm một số mã. .
Thực hiện mã hóa. .
xáo trộn đầu tiên. .
Chuyển hướng đầu ra. .
Phân tích kết quả

Chúng tôi có thể ẩn mã JavaScript không?

Bạn đơn giản là không thể . Trình kiểm tra mã được thiết kế để gỡ lỗi HTML và JavaScript. Họ làm như vậy bằng cách hiển thị đối tượng DOM trực tiếp của trang web. Điều đó có nghĩa là nó tiết lộ mã HTML của mọi thứ bạn nhìn thấy trên trang, ngay cả khi chúng được tạo bởi JavaScript.