Câu trả lời:
Bạn có nên quan tâm? Không.
Tại sao? Bởi vì không có gì bạn thực sự có thể làm về nó.
Một số đã dự đoán obfuscation. Điều này hoạt động cho Java và .Net nhưng Python, Javascript và Perl đều là văn bản đơn giản nên bạn thực sự có thể làm rất ít. Giá trị trong trang web của bạn chắc chắn là phía máy chủ, vì vậy đừng lo lắng về Javascript.
Điều tốt nhất bạn có thể làm là làm xáo trộn mã để những người khác sẽ gặp khó khăn khi sửa đổi nó. Tất nhiên, bạn giữ một bản sao của bản gốc.
Như một phần thưởng, mã bị xáo trộn phải nhỏ hơn và do đó tải nhanh hơn.
Tại sao bạn lo lắng Tôi thấy hai lý do có thể là: 1) Bạn đang viết thư viện JavaScript thương mại. Giải pháp: Nhận một kế hoạch kinh doanh khác, libs JavaScript có xu hướng miễn phí. Có lẽ bạn có thể kiếm tiền trong một phân khúc nhỏ của các doanh nghiệp, nhưng rất có thể họ sẽ không sử dụng mã sao chép bất hợp pháp nào.
2) Bạn lo lắng rằng đối thủ cạnh tranh của bạn sẽ sao chép trang web của bạn. Nếu họ làm như vậy, bạn có thể yên tâm rằng bạn sẽ luôn đi trước họ một bước. Nhiều khả năng, họ sẽ tự viết mã và sao chép giao diện cũng như hành vi của trang web của bạn và không có gì có thể cứu bạn khỏi điều đó ngoại trừ việc nhận bằng sáng chế phần mềm ngu ngốc, ví dụ như mua sắm bằng một cú nhấp chuột trên amazon.
IOW, đừng lo lắng. Đặt một thông báo bản quyền yêu cầu mọi người cho bạn biết nếu họ sử dụng công cụ của bạn. Nếu đủ người làm điều đó, hãy sử dụng thực tế là bạn đã tạo ra một thư viện hữu ích để nhận được tín dụng giữa các chuyên viên máy tính, điều này có thể sẽ có lợi về lâu dài.
Không. Đừng thử và "bảo vệ" ngôn ngữ kịch bản phía máy khách. Obfuscation không hoạt động. Giảm thiểu có những công dụng của nó (nhưng chống vi phạm bản quyền không phải là một trong số đó)
Tôi cũng muốn giới thiệu với rút gọn mã của bạn trừ khi bạn nhận được hàng ngàn lượt truy cập mỗi ngày, trong đó một vài kilobyte thêm theo yêu cầu sẽ là một sự khác biệt đáng chú ý (và chỉ làm điều đó khi bạn nén tất cả các hình ảnh mà bạn đang sử dụng một cách chính xác, mà bạn sẽ tiết kiệm được nhiều hơn một vài KB, thiết lập bộ nhớ đệm đúng cách và vv) ..
Ngay cả khi bạn thu nhỏ / làm xáo trộn Javascript, mọi người vẫn có thể sao chép nó một cách tầm thường vào trang web của riêng họ. Sẽ khó khăn hơn một chút để sửa đổi, nhưng tùy thuộc vào kịch bản làm gì, điều đó có thể không quan trọng. Ví dụ, trình soạn thảo WMD mà mọi người đã đề cập được cung cấp, để sử dụng công khai, được thu nhỏ.
Obfuscation và việc rút gọn có thể giống nhau, nhưng nếu bạn đã xáo trộn đúng mã, bạn sẽ phải viết lại về cơ bản phân đoạn lớn của nó để làm cho nó khó hiểu .. Điều này làm cho các mã phức tạp hơn, và xa hơn để đối phó với (ví bạn), vì vậy sẽ giới thiệu các lỗi .. Nếu Javascript của bạn bị lỗi, điều đó sẽ ngăn chặn vi phạm bản quyền, vì không ai muốn sử dụng (hoặc đánh cắp) nó .. nhưng, lỗi, điều đó không tốt.
Một trong những điều tuyệt vời về Javascript là bất kỳ ai cũng có thể nhấp chuột phải / xem nguồn và tìm hiểu Javascript bằng cách xem mã trực tiếp, làm việc .. Nếu bạn lo lắng về việc mọi người nhìn vào mã và sao chép mã, web / Javascript sẽ không ' đúng ngôn ngữ ..
Tôi sẽ khuyên bạn nên đặt một nhận xét khi bắt đầu tất cả các .js
tệp và <script>
khối của bạn, với thông tin của bạn (tên, trang web) và giấy phép của một số loại. Tùy thuộc vào mã là gì, có lẽ đặt một thông báo "Nếu bạn sử dụng tất cả hoặc một phần của mã này trong một dự án, xin vui lòng cho tôi biết về nó!" có thể hiệu quả hơn nhiều so với "Không sử dụng mã này cho bất kỳ mục đích nào khác!"
Bạn có thể làm xáo trộn (hoặc ít nhất là giảm thiểu) mã để không khuyến khích điều này (mặc dù nó không phải là không thể ngăn chặn được đối với người có thời gian.
Thực sự bất kỳ mã nào bạn đặt frontend sẽ được công khai và có sẵn cho tất cả mọi người xem / sử dụng.
Tại sao phải lo lắng về nó cả? Nếu tập lệnh của bạn đáng bị đánh cắp, thay vào đó bạn có thể biến chúng thành nguồn mở và nhận trợ giúp trong việc mài giũa chúng.
Bạn thực sự không thể vì đó là ngôn ngữ được diễn giải luôn được phân phối ở dạng mã nguồn. Ngay cả việc giấu giếm cũng không giúp được gì nhiều nếu cướp biển có đủ động lực.
(Ví dụ trường hợp: Trình soạn thảo WMD của StackOverflow , có thể - nói một cách nghiêm túc - được xem là vi phạm bản quyền, mặc dù tôi biết rằng Jeff và Dana chỉ có ý định tốt)
Tôi sử dụng GWT (Bộ công cụ web của Google) để viết các ứng dụng web, trong đó mã được viết bằng Java và có thể được gỡ lỗi và kiểm tra bằng các công cụ tập trung vào Java, nhưng được chuyển đổi thành JavaScript để phát hành.
Khi không ở chế độ PRETTY
hoặc DETAILED
chế độ, JavaScript được tạo bởi GWT được tối ưu hóa rất cao và bị xáo trộn, khiến nó trở nên cực kỳ không thực tế đối với kỹ sư đảo ngược. (Trình giải mã JavaScript truyền thống sẽ cung cấp một phần các lợi ích này - nhưng không phải là nơi tối ưu hóa phụ thuộc vào khả năng của GWT để thực hiện cắt tỉa chi tiết và phân tích đường dẫn mã).
Điều đó nói rằng, nói chung, tôi -1 về việc xáo trộn - chẳng hạn, có nghĩa là khách hàng hợp pháp ít có khả năng giúp bạn tìm ra vấn đề của họ, ngay cả khi họ có kỹ năng phát triển và bản sao của FireBug. Bạn là tác giả ban đầu - bạn biết mã tốt hơn bất kỳ ai khác và điều đó mang lại cho bạn lợi thế cạnh tranh so với ai đó đang cố gắng thực hiện một cuộc đấu giá rẻ; hơn nữa, nếu bất kỳ đối thủ cạnh tranh như vậy thực sự kiếm được tiền thực sự từ một thứ gì đó mà họ đã đánh cắp mà không được phép, điều đó sẽ mở ra cho họ số tiền đó (hoặc, có khả năng, treble số tiền) bị lấy đi trong một vụ kiện; cạnh tranh hợp pháp và nghiêm túc sẽ không đi theo con đường đó, và tại sao phải lo lắng về loại khác?
Chúng tôi sử dụng rất nhiều mã Javascript (và rất nhiều mã phía máy chủ) cho ứng dụng web của mình và chúng tôi đã chọn "làm xáo trộn" các Javascripts để xóa bất kỳ khoảng trắng, ngắt dòng, v.v. - điều này sẽ không thực sự bảo vệ mã của bạn, nhưng làm cho nó rất khó đọc và hiểu, và rất có thể những người khác sẽ không bận tâm do những nỗ lực liên quan.
Tuy nhiên, lý do chúng tôi làm điều này không nhiều đến mức chúng tôi không muốn ai đó sao chép các phần của mã của mình, mà là không khuyến khích các đối tác / khách hàng của chúng tôi gửi mã sửa đổi trực tiếp trong "tệp của chúng tôi" tránh rắc rối khi bản cập nhật tiếp theo được cài đặt) ...
Lưu ý: Obfuscation có một nhược điểm bạn cần lưu ý, mặc dù: nếu bạn cần gỡ lỗi mã script, bản thân bạn sẽ không thể làm việc với thông tin bị che khuất, do đó, điều này sẽ luôn liên quan đến việc sao chép tệp 'có thể đọc được' vào máy chủ đầu tiên.
Giả định rằng bất kỳ javascript nào đủ tốt sẽ được người khác chọn, làm thế nào về việc chỉ bơi với hiện tại và tận dụng tối đa nó?
Tát một giấy phép trên đó cho phép sử dụng trong khi yêu cầu quy kết ví dụ. Có thể với một điều khoản phi thương mại như một số biến thể Creative Commons nữa, nếu bạn thực sự phải làm.
Nếu bạn có bí mật thương mại, bạn có thể di chuyển các phần nhạy cảm nhất của mã sang ActionScript (Flash). Về cơ bản, nó giống ngôn ngữ với JavaScript và được lưu trữ ở dạng mã thông báo.
Nếu bạn lo lắng về việc tin tặc khó tính đã đánh cắp mã của bạn, xin lỗi, bạn không thể làm gì được. Nhưng có nhiều cách để làm cho nó bất tiện cho những tên trộm thông thường. Một cách tương đối dễ dàng để làm điều đó là tải một số bộ phận bằng cách sử dụng XMLHttpRequest
và eval()
chúng; điều này có thể được ngụy trang thành (hoặc bao gồm) một cái gì đó có dữ liệu JSON và sử dụng chúng để điền vào trang.