Hướng dẫn how do i protect my javascript source code? - làm cách nào để bảo vệ mã nguồn javascript của tôi?
Show
JavaScript là ngôn ngữ lập trình với nhiều tính năng hữu ích, nó được xây dựng xung quanh tính linh hoạt, mang lại cho bạn tất cả khả năng cần thiết để làm những gì bạn muốn với nó. Bản chất năng động của JavaScript, cho phép nó trở thành ngôn ngữ thực tế cho trình duyệt và ngôn ngữ lập trình phổ biến nhất trên thế giới. Một trong những tính năng JS hữu ích nhất là, ví dụ, phân tích cú pháp ngay lập tức. Tính năng này có nghĩa là trình duyệt thực thi mã ngay khi tải xuống nội dung, tự nhiên mang lại lợi ích. Tuy nhiên, với mức độ tự do này cũng có trách nhiệm. Trong bài viết này, chúng tôi muốn đi sâu vào các rủi ro bảo mật của JavaScript và cách bảo vệ mã JavaScript. Lần này chúng tôi sẽ chỉ bao gồm mã mặt trước chạy trên trình duyệt, nhưng chúng tôi có một hướng dẫn khác về bảo vệ các ứng dụng Node.js. Làm thế nào để trình duyệt thực thi javaScript?Hãy tưởng tượng tất cả các bước cần thiết cho một trình duyệt. Đầu tiên, nó phải tải xuống trang và bắt đầu phân tích cú pháp. Trình duyệt không chờ đợi mọi thứ để tải xuống, nó có khả năng tải xuống và phân tích trang cùng một lúc. Vậy điều gì xảy ra khi nó gặp JavaScript? JavaScript là chặn chặn, có một lợi thế to lớn khi nó thực hiện. Điều này có nghĩa là, trình duyệt sẽ tạm dừng phân tích cú pháp, thực hiện JavaScript trước, sau đó tiếp tục. Điều này cung cấp tính linh hoạt cuối cùng trong việc sử dụng ngôn ngữ lập trình này và mở ra mã cho bất kỳ số lượng khả năng nào. Tuy nhiên, câu hỏi là: Ý nghĩa của các tính năng như vậy khi cố gắng xây dựng các ứng dụng JavaScript an toàn là gì? Rủi ro của JavaScript1. Gỡ lỗi và giả mạoCác hướng dẫn bảo mật ứng dụng như các hướng dẫn từ OWASP nêu bật các mối đe dọa do kỹ thuật đảo ngược và giả mạo mã nguồn ứng dụng, đặc biệt là trong các ứng dụng xử lý dữ liệu nhạy cảm hoặc thực hiện các hoạt động quan trọng. Đây chính xác là trường hợp của các ứng dụng do JavaScript cung cấp, trong đó những rủi ro này có thể được tận dụng dưới dạng các cuộc tấn công khác nhau như trộm cắp sở hữu trí tuệ, lạm dụng tự động, vi phạm bản quyền và giải thoát dữ liệu. . Các quy định và tiêu chuẩn như NIST và ISO 27001 cũng đề cập đến những rủi ro này khi có mã nguồn không được bảo vệ, khuyến nghị các tổ chức đưa ra các quy trình kiểm soát nghiêm ngặt để giữ cho họ không gặp phải hậu quả của các cuộc tấn công có thể xảy ra. Để minh họa những rủi ro này, hãy tưởng tượng đoạn mã sau:
Điều này tuyên bố một mục tiêu trong HTML và dây lên các sự kiện. Khi bạn nhấp vào nút, cuộc gọi lại bắn. Với JavaScript phía máy khách, bạn có thể đặt điểm dừng ngay khi đặt giá trị. Điểm dừng này bị tấn công ngay khi sự kiện bắn. Giá trị được đặt thông qua Kể từ khi trình gỡ lỗi tạm dừng thực thi, nó cũng có khả năng tạm dừng kết xuất trang. Gỡ lỗi là một phần của công cụ bên trong trình duyệt để bất kỳ ai có quyền truy cập vào điều này. Để xem kỹ thuật này trong hành động, hãy xem mã này trên PEN mã có sẵn. Dưới đây là ảnh chụp màn hình của việc gỡ lỗi: Vì vậy, chúng tôi biết rằng tính năng này là tuyệt vời để gỡ lỗi JavaScript, nhưng làm thế nào nó có thể tác động đến mã JavaScript an toàn? Giống như bất cứ ai cũng có thể sử dụng công cụ gỡ lỗi cho mục đích hợp pháp, kẻ tấn công có thể sử dụng tính năng này để thay đổi JavaScript khi chạy. Kẻ tấn công có thể nhấn một điểm dừng, thay đổi DOM và nhập JavaScript tùy ý trong bảng điều khiển. Loại tấn công này có thể được sử dụng để khai thác các lỗ hổng bảo mật có thể có ở phía máy khách. Kẻ tấn công có thể thay đổi dữ liệu, chiếm đoạt phiên và thực hiện các thay đổi JavaScript tùy ý trên trang, do đó làm ảnh hưởng đến bảo mật của mã gốc. Hoặc, như Owasp nói:
Ví dụ: với các công cụ nhà phát triển web được mở, bất kỳ ai cũng có thể vào tab Console và nhập:
Lần tới khi sự kiện này nổ ra, nó sẽ bắn thay đổi JavaScript này. Bạn có thể cảm nhận được hương vị cay đắng của nguy hiểm? 2. Dữ liệu thoát ra và các cuộc tấn công phía máy khách khácVượt ra ngoài rủi ro bảo mật của những kẻ tấn công nhắm vào chính mã nguồn JavaScript, chúng ta vẫn phải xem xét những nguy hiểm của việc thực thi JavaScript tùy ý trong trình duyệt. Chúng tôi đã thấy một sự gia tăng ngày càng tăng của các cuộc tấn công chuỗi cung ứng web như các cuộc tấn công của Magecart tràn vào web và tận dụng dữ liệu của khách hàng để tìm hiểu dữ liệu. Để đặt điều này vào viễn cảnh, hãy xem một ví dụ. Giả sử rằng bằng cách nào đó (điều này đã xảy ra trước đó) CDN của bạn bị xâm phạm và tập lệnh
Nó rất có thể là bạn đã giành được thông báo về sự thay đổi này và trang web của bạn sẽ phân phối phần mềm độc hại. Bây giờ, chúng ta hãy thử một phiên bản dễ đọc hơn của cùng một đoạn:
Chúng ta có thể hiểu logic của nó như sau:
OK, vì vậy hãy làm rõ: Mỗi khi một biểu mẫu được gửi, dữ liệu chính xác được gửi đến một máy chủ từ xa (____10), yêu cầu những gì được cho là tài nguyên hình ảnh. Sau đó, chủ sở hữu của 0 sẽ nhận được dữ liệu trên nhật ký truy cập của họ:
Và kết quả là, trang web của bạn sẽ âm thầm rò rỉ dữ liệu người dùng ngay vào tay kẻ tấn công, ngay cả khi không có bất kỳ vi phạm nào đối với máy chủ của riêng bạn. Đây là lý do tại sao các cuộc tấn công chuỗi cung ứng web là một mối đe dọa đáng kể hiện nay, vì các quy định như GDPR/CCPA/HIPAA áp đặt các hình phạt lớn sau rò rỉ dữ liệu của người dùng. 1. Bảo vệ mã JavaScriptVới tính chất linh hoạt và năng động của web, để bảo vệ mã JavaScript khỏi những kẻ tấn công tiềm năng, tùy chọn tốt nhất là thêm bảo vệ thời gian chạy. Lớp bảo mật này sẽ bảo vệ mã JavaScript trong khi thực hiện để tránh giả mạo, cung cấp mức độ bảo vệ hiệu quả nhất cho các ứng dụng phía khách hàng. Như đã giải thích bởi Gartner:
Khi JavaScript đạt trình duyệt, không có gì để bảo vệ hoàn toàn việc thực thi của nó. Bảo vệ thời gian chạy sẽ bảo vệ chống lại việc gỡ lỗi và mã hóa các cuộc tấn công chỉ xảy ra trong thời gian chạy. Điều này sẽ bao gồm các cuộc tấn công sửa đổi ứng dụng trong khi nó ngoại tuyến. Một giải pháp bảo vệ thời gian chạy tốt cũng sẽ làm xáo trộn mã đến nơi kẻ tấn công không thể làm xáo trộn với chính giải pháp, cũng không chỉ đơn giản là đi xung quanh nó. Tất cả các lớp bảo vệ này có nghĩa là để đảm bảo rằng bạn có mã JavaScript an toàn chạy trên web, mặc dù những nỗ lực của kẻ tấn công để giả mạo nó. Một giải pháp bảo vệ thời gian chạy mạnh mẽ cũng sẽ gửi thông báo khi kẻ tấn công cố gắng ngăn chặn mã. Điều này cho phép chủ sở hữu ứng dụng phản ứng và hành động, ví dụ bằng cách chấm dứt phiên người dùng. JScrambler Code Integrity cung cấp một giải pháp bảo vệ thời gian chạy nhằm bảo vệ các ứng dụng chống lại các cuộc tấn công thời gian chạy. Nó kết hợp các kỹ thuật chống debugging và chống giả mạo cùng với các khả năng tự vệ khác để cung cấp bảo vệ tích cực cho các ứng dụng JavaScript. Đặc biệt:
Bạn có thể bắt đầu thử giải pháp của chúng tôi miễn phí ngay bây giờ. 2. Bảo vệ phía khách hàngQuá trình phát triển JavaScript điển hình thường phụ thuộc vào việc sử dụng các thành phần nguồn mở giúp tăng tốc độ phát triển. Ngoài ra, hầu hết các trang web cuối cùng sẽ chạy một số tập lệnh của bên thứ ba (chatbots, phân tích, quảng cáo, v.v.) trong thời gian chạy. Thực tế của việc sử dụng tất cả các đoạn mã có nguồn gốc từ bên ngoài này là bề mặt tấn công cho các cuộc tấn công phía khách hàng tăng mạnh. Vì các hệ thống bảo mật truyền thống (bảo mật phía máy chủ, bảo mật mạng) không đề cập đến phía khách hàng, để giải quyết các mối đe dọa ngày càng tăng này, các công ty cần có khả năng hiển thị hoàn toàn và kiểm soát phía trang web của họ. JSCRAMBLER Trang web Liêm chính cung cấp bảo vệ phía khách hàng đầy đủ tính năng chống lại các cuộc tấn công phía máy khách như Skimmer web Magecart và Data EXFILTRATION. Đặc biệt:
Để bắt đầu với tính toàn vẹn của trang web JScrambler, hãy yêu cầu báo cáo kiểm kê miễn phí về trang web của bạn. Báo cáo này cung cấp một ảnh chụp nhanh của mỗi tập lệnh của bên thứ ba chạy trên trang web của bạn và hành vi của họ được chia thành những hiểu biết bảo mật có thể hành động. Sự kết luậnVì JavaScript cung cấp năng lượng cho hầu hết các trang web (bao gồm các trang web xử lý dữ liệu người dùng cực kỳ nhạy cảm) và vì nó tự nhiên là ngôn ngữ năng động cho web được xây dựng để linh hoạt, nên nó đặt ra mối quan tâm bổ sung về bảo mật. Giống như bất kỳ thanh kiếm hai lưỡi tốt, bạn phải chịu trách nhiệm này. Vì vậy, để bảo vệ mã JavaScript, bạn phải tính đến những gì xảy ra trong thời gian chạy. Để bảo vệ mã JavaScript, bạn phải tính đến những gì xảy ra trong thời gian chạy, cả hai vì những kẻ tấn công có thể nhắm mục tiêu mã nguồn tiếp xúc của bạn và vì chúng có thể tiêm mã JavaScript độc hại thông qua các tập lệnh của bên thứ ba của bạn. Giải quyết cả hai chiều này thành công đưa bạn lên trước những kẻ tấn công và trên con đường tuân thủ đúng đắn. Có thể mã hóa mã 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.there's no way of protecting it completely.
Tôi có thể ẩn mã JavaScript của mình không?Không, nó không thể.Nếu bạn không đưa nó cho trình duyệt, thì trình duyệt không có nó.Nếu bạn làm như vậy, thì nó (hoặc một tham chiếu dễ dàng theo nó) tạo thành một phần của nguồn.. If you don't give it to the browser, then the browser doesn't have it. If you do, then it (or an easily followed reference to it) forms part of the source.
Làm thế nào để sở hữu trí tuệ bảo vệ JavaScript?Có hai cách chung để bảo vệ tài sản trí tuệ, về mặt pháp lý hoặc kỹ thuật.Về mặt pháp lý có nghĩa là nhận bản quyền hoặc ký hợp đồng pháp lý chống lại việc tạo các bản sao, v.v. và về mặt kỹ thuật có nghĩa là chủ sở hữu của phần mềm sẽ đưa ra giải pháp để bảo vệ với mã JavaScript cụ thể đó.getting copyrights or signing legal contracts against creating duplicates etc. And technically means the owners of the software will give the solution for protection with that particular JavaScript code. |