Tôi có nên lo lắng về 'vi phạm bản quyền Javascript' không?


11

Nếu tôi viết một ứng dụng Javascript phía máy khách (với một chút tương tác máy chủ), làm cách nào tôi có thể ngăn mọi người sao chép các tệp Javascript vào trang web của riêng họ? Tôi có nên, tất cả?

Câu trả lời:


34

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.


1
Nếu tôi có thể tìm ra những gì tôi cần biết từ Java bị xáo trộn (được cho là đã bị xáo trộn), tôi nghĩ rằng tôi có thể quản lý Javascript và tôi hầu như không phải là một chuyên gia về "hack" hoặc kỹ thuật đảo ngược như vậy. "Thông tin khao khát được miễn phí" (trích dẫn tôi đã nghe ở đâu đó).

2
Javascript có một sự bảo vệ bẩm sinh: nó gắn liền với mã máy chủ, không thể truy cập được. Obfuscation là một giả dược. Nó cũng làm cho việc chẩn đoán các báo cáo lỗi mà bạn nhận được trở nên khó khăn hơn. Nếu ai đó sẽ xé toạc bạn ra (và tôi nghĩ rằng bạn đang phóng đại giá trị của mã JS của bạn) thì bạn không thể làm được gì nhiều

1
Và mẹo hay trong câu hỏi là gì?

2
Các phiếu giảm làm tôi cười. Javascript được sử dụng tốt nhất như một tiện ích để cải thiện trang web của bạn. Mã duy nhất đáng để bảo vệ là mã hiển thị thông tin về hoạt động bên trong của trang web và công ty của bạn. Không phải những điều này thuộc về kịch bản máy khách để bắt đầu!

1
@Jim: tôi không biết điều đó Tôi nghĩ rằng số lượng hiện tại là 17 upvote, 8 downvote và do có mặt tại đại diện hàng ngày, đại diện của tôi từ câu trả lời này là ... -16.

14

Đ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.


Đó gọi là tối thiểu hóa Javascript, phải không?
Jonathan Leffler

4
thực sự thu nhỏ
Matt Briggs

9

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.


Đây là một ứng dụng web, không phải thư viện :). Cảm ơn # 2.

6

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 .jstệ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!"


4

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.


Trình soạn thảo WMD không bị xáo trộn, nó chỉ bị thu nhỏ.

Giảm thiểu JavaScript cũng có tác dụng phụ của việc làm xáo trộn nó ... var va = fa (); cũng như bị xáo trộn.
Unkwntech

4

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.


Ngoài ra, bạn cũng có khả năng nhận được tín dụng và PR tốt cho họ. Nếu bạn không thể làm cho những điều này làm việc cho bạn theo nghĩa kinh doanh thông thường, hãy xem cách bạn có thể làm cho chúng hoạt động cho bạn theo những cách khác.
Jon Hopkins

4

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)


4

Không. Bạn không nên lo lắng gì cả.

Nếu doanh nghiệp của bạn phụ thuộc vào tính bảo mật của mã JavaScript, thì có một số vấn đề nghiêm trọng với nó.

Nếu không, đừng bận tâm. Có thể bạn nên thử giảm thiểu mã JavaScript để tải trang nhanh hơn.


3

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ế độ PRETTYhoặc DETAILEDchế độ, 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?


2

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.


2
Tôi sẽ không gọi định dạng Javascript trong trình chỉnh sửa hoặc sử dụng một số dạng "máy in đẹp" để có nhiều nỗ lực. Giảm những thứ đó có thể hữu ích cho việc giảm băng thông (tức là giảm thiểu) nhưng đó là tất cả.

Nếu tệp Javascript lớn, nó là rất nhiều nỗ lực. Ngoài ra, "máy in đẹp" không hoạt động tốt (hoặc hoàn toàn không hoạt động) trên loại tệp "một dòng chứa tất cả mã".

1

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.


1

Hầu hết logic ứng dụng của bạn phải ở phía máy chủ. Javascript chỉ nên xử lý công cụ GUI và các tương tác đơn giản với máy chủ. Nếu mã Javascript của bạn chứa đủ logic ứng dụng mà bạn lo lắng về việc ai đó đánh cắp nó, thì có lẽ bạn đã làm sai điều gì đó.


0

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.


0

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 XMLHttpRequesteval()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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.