ฉันควรกังวลเกี่ยวกับ 'การละเมิดลิขสิทธิ์ Javascript' หรือไม่


11

ถ้าฉันเขียนแอพ Javascript ฝั่งไคลเอ็นต์ (มีการโต้ตอบกับเซิร์ฟเวอร์เล็กน้อย) ฉันจะป้องกันไม่ให้ผู้อื่นคัดลอกไฟล์ Javascript ไปยังไซต์ของตัวเองได้อย่างไร ฉันควรที่ทั้งหมดหรือไม่

คำตอบ:


34

คุณควรสนใจไหม เลขที่

ทำไม? เพราะไม่มีอะไรที่คุณสามารถทำได้เกี่ยวกับเรื่องนี้

บางคนได้แนะนำการทำให้งง สิ่งนี้ใช้ได้กับ Java และ. Net แต่ Python, Javascript และ Perl เป็นข้อความธรรมดาทั้งหมดจึงมีน้อยมากที่คุณสามารถทำได้ คุณค่าในเว็บไซต์ของคุณนั้นไม่ต้องสงสัยเลยว่าฝั่งเซิร์ฟเวอร์จึงไม่ต้องกังวลกับ Javascript


1
หากฉันสามารถหาสิ่งที่ฉันจำเป็นต้องรู้จากการถอด Java ที่ถูกทำให้ยุ่งเหยิง (ถูกกล่าวหา) ฉันคิดว่าฉันสามารถจัดการ Javascript ได้และฉันแทบจะไม่เชี่ยวชาญในการ "แฮ็ก" หรือวิศวกรรมย้อนกลับ "ข้อมูลปรารถนาที่จะเป็นอิสระ" (อ้างฉันได้ยินที่ไหนสักแห่ง)

2
Javascript มีการป้องกันโดยธรรมชาติ: มันเชื่อมโยงกับรหัสเซิร์ฟเวอร์ซึ่งไม่สามารถเข้าถึงได้ การทำให้งงงวยเป็นยาหลอก นอกจากนี้ยังทำให้ยากต่อการวิเคราะห์รายงานข้อผิดพลาดที่คุณได้รับ หากมีใครบางคนกำลังจะฉุดคุณ (และฉันคิดว่าคุณเกินค่ารหัส JS ของคุณ) คุณไม่สามารถทำอะไรได้มาก

1
และเคล็ดลับเด็ด ๆ ในคำถามคืออะไร?

2
คะแนนโหวตทำให้ฉันหัวเราะ Javascript ใช้ดีที่สุดเป็นเครื่องมือในการปรับปรุงเว็บไซต์ของคุณ การปกป้องรหัสเดียวที่คุ้มค่าคือรหัสที่เปิดเผยข้อมูลเกี่ยวกับผลงานภายในของเว็บไซต์และ บริษัท ของคุณ สิ่งเหล่านี้ไม่ได้อยู่ในสคริปต์ไคลเอนต์เพื่อเริ่มต้น!

1
@ จิม: ฉันไม่รู้หรอก ฉันคิดว่าการนับปัจจุบันคือ 17 upvotes, 8 downvotes และเนื่องจากอยู่ที่ตัวแทนรายวันสูงสุดตัวแทนของฉันจากคำตอบนี้คือ ... -16

14

สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือทำให้รหัสสับสนเพื่อให้ผู้อื่นแก้ไขได้ยาก แน่นอนคุณเก็บสำเนาต้นฉบับไว้

เป็นโบนัสรหัสที่ยุ่งเหยิงควรมีขนาดเล็กลงและทำให้โหลดเร็วขึ้น


นั่นเรียกว่าการย่อขนาด Javascript หรือไม่
Jonathan Leffler

4
การลดขนาดจริง
Matt Briggs

9

ทำไมคุณถึงกังวล ฉันเห็นเหตุผลสองประการที่อาจเป็นไปได้: 1) คุณกำลังเขียนไลบรารี JavaScript เชิงพาณิชย์ การแก้ไข: รับแผนธุรกิจอื่น ๆ libs JavaScript มีแนวโน้มที่จะฟรี บางทีคุณสามารถสร้างรายได้ในช่องเล็ก ๆ ขององค์กร แต่พวกเขามักจะไม่ใช้รหัสที่คัดลอกมาอย่างผิดกฎหมายอยู่ดี

2) คุณกังวลว่าคู่แข่งของคุณกำลังจะคัดลอกเว็บไซต์ของคุณ หากพวกเขาทำคุณสามารถมั่นใจได้ว่าคุณจะก้าวไปข้างหน้าหนึ่งก้าว มีแนวโน้มที่พวกเขาจะเขียนโค้ดของตัวเองและคัดลอกลักษณะและพฤติกรรมของเว็บไซต์ของคุณและไม่มีอะไรที่จะช่วยคุณได้ยกเว้นว่าจะได้รับสิทธิบัตรซอฟท์แวร์โง่ ๆ เช่น amazon เพียงคลิกเดียวช็อปปิ้ง

IOW ไม่ต้องกังวล แจ้งประกาศลิขสิทธิ์ให้ผู้อื่นบอกคุณว่าพวกเขาใช้สิ่งของของคุณ ถ้ามีคนทำเช่นนั้นให้ใช้ความจริงที่ว่าคุณได้สร้างห้องสมุดที่มีประโยชน์เพื่อให้ได้รับเครดิตในหมู่คนที่น่าจะเป็นประโยชน์ในระยะยาว


มันเป็นเว็บแอปพลิเคชั่นไม่ใช่ห้องสมุด :) ขอบคุณสำหรับ # 2

6

ไม่อย่าลองและ "ปกป้อง" ภาษาสคริปต์ฝั่งไคลเอ็นต์ การทำให้งงงวยไม่ทำงาน การลดขนาดเป็นการใช้ (แต่การต่อต้านการละเมิดลิขสิทธิ์ไม่ใช่หนึ่งในนั้น)

ฉันก็จะแนะนำกับลดรูปรหัสของคุณจนกว่าคุณจะได้รับความนิยมมากมายต่อวันซึ่งเป็นกิโลไบต์พิเศษไม่กี่ต่อคำขอจะเป็นความแตกต่างที่เห็นได้ชัด (และทำอย่างนั้นเมื่อคุณบีบอัดภาพทั้งหมดที่คุณกำลังใช้อย่างถูกต้องซึ่งจะช่วยให้คุณประหยัด ไกลเกินกว่าสองสาม KB การตั้งค่าแคชอย่างเหมาะสมและอื่น ๆ ) ..

แม้ว่าคุณจะย่อเล็กลง / ทำให้งงงวย Javascript คนก็ยังสามารถคัดลอกไปยังเว็บไซต์ของตัวเองได้เล็กน้อย มันจะยากขึ้นเล็กน้อยในการปรับเปลี่ยน แต่ขึ้นอยู่กับสิ่งที่สคริปต์ทำซึ่งอาจไม่สำคัญ ตัวอย่างเช่นตัวแก้ไข WMD ที่ผู้คนกล่าวถึงนั้นมีให้สำหรับการใช้สาธารณะลดขนาด

Obfuscation และ minification สามารถที่คล้ายกัน แต่ถ้าคุณจะต้องทำให้งงงวยรหัสที่คุณจะต้องเขียนโดยทั่วไปส่วนใหญ่ของมันจะทำให้มันยากที่จะเข้าใจ .. นี้จะทำให้รหัสซับซ้อนมากขึ้นและไกลยากที่จะจัดการกับ (สำหรับ คุณ) ดังนั้นจะแนะนำข้อบกพร่อง .. หาก Javascript ของคุณกลายเป็นบั๊กกี้นั่นจะป้องกันการละเมิดลิขสิทธิ์เนื่องจากไม่มีใครต้องการใช้ (หรือขโมย) มัน .. แต่ผิดพลาดนั่นไม่ดี

หนึ่งในสิ่งที่ยอดเยี่ยมเกี่ยวกับ Javascript คือทุกคนสามารถคลิกขวา / ดูแหล่งที่มาและเรียนรู้จาวาสคริปต์โดยดูที่รหัสที่ทำงานอยู่หากคุณกังวลเกี่ยวกับคนที่ดูรหัสและคัดลอกมันเว็บ / Javascript isn ' ภาษาที่ถูกต้อง

ฉันขอแนะนำให้ใส่ความคิดเห็นในตอนเริ่มต้นของ.jsไฟล์และ<script>บล็อกทั้งหมดของคุณพร้อมข้อมูลของคุณ (ชื่อเว็บไซต์) และใบอนุญาตบางประเภท ขึ้นอยู่กับว่ารหัสคืออะไรบางทีอาจจะมีข้อความแจ้งว่า "ถ้าคุณใช้รหัสนี้ทั้งหมดหรือบางส่วนในโครงการโปรดแจ้งให้เราทราบ!" อาจมีประสิทธิภาพมากกว่า "อย่าใช้รหัสนี้เพื่อจุดประสงค์อื่นใดตลอดไป!"


4

คุณสามารถทำให้งงงัน (หรืออย่างน้อยลดขนาด) รหัสเพื่อกีดกันสิ่งนี้ (แม้ว่ามันจะไม่ผ่านพ้นสำหรับคนที่มีเวลาตัวอย่างเช่น deobfuscation ของ StackOverflow ของตัวแก้ไข WMD (แต่นี่เป็นเหตุผลที่ดี!))

รหัสใด ๆ ที่คุณใส่ส่วนหน้าจะเป็นสาธารณะและพร้อมให้ทุกคนได้เห็น / ใช้


เครื่องมือแก้ไข WMD ไม่ได้ทำให้งงงวย แต่เป็นเพียงการย่อขนาด

การลดขนาด JavaScript มีผลดีต่อการทำให้งงเกินไป ... var va = fa (); เป็นเช่นเดียวกับที่ทำให้งง
Unkwntech

4

ทำไมต้องเป็นห่วงเลย? หากสคริปต์ของคุณคุ้มค่ากับการขโมยคุณสามารถทำให้พวกเขาเป็นโอเพ่นซอร์สและได้รับความช่วยเหลือในการสร้างสคริปต์


นอกจากนั้นคุณยังอาจได้รับเครดิตและการประชาสัมพันธ์ที่ดีสำหรับพวกเขา หากคุณไม่สามารถทำให้สิ่งเหล่านี้ทำงานให้คุณได้ในแง่ธุรกิจปกติให้ดูว่าคุณสามารถทำให้สิ่งเหล่านี้ทำงานให้คุณได้ด้วยวิธีอื่น
Jon Hopkins

4

คุณไม่สามารถทำได้จริง ๆ เพราะเป็นภาษาที่ตีความที่ส่งมอบเสมอในรูปแบบซอร์สโค้ด การทำให้งงงวยจะไม่ช่วยอะไรมากหากโจรสลัดมีแรงจูงใจเพียงพอ

(ตัวอย่าง - ตัวอย่าง: ตัวแก้ไข StackOverflow WMDซึ่งอาจเป็น - พูดอย่างเคร่งครัด - ถูกมองว่าเป็นการละเมิดลิขสิทธิ์แม้ว่าฉันรู้ว่า Jeff และ Dana มีความตั้งใจดีเท่านั้น)


4

ไม่คุณไม่ควรกังวลเลย

หากธุรกิจของคุณขึ้นอยู่กับความลับของรหัส JavaScript ของคุณอาจมีปัญหาร้ายแรงเกิดขึ้น

มิฉะนั้นก็ไม่ต้องกังวล อาจเป็นไปได้ว่าคุณควรลองลดรหัส JavaScript ของคุณเพื่อให้หน้าโหลดเร็วขึ้น


3

ฉันใช้GWT (Google Web Toolkit)สำหรับการเขียนเว็บแอปพลิเคชันซึ่งโค้ดทั้งหมดเขียนด้วยภาษาจาวาและสามารถทำการดีบั๊กและทดสอบด้วยเครื่องมือที่ใช้ Java เป็นศูนย์กลาง แต่จะถูกแปลงเป็นจาวาสคริปต์สำหรับการเปิดตัว

เมื่อไม่ได้อยู่ในโหมดPRETTYหรือDETAILEDจาวาสคริปต์ที่สร้างโดย GWT นั้นได้รับการปรับแต่งและทำให้งงมากทำให้ไม่สามารถทำวิศวกรรมย้อนกลับได้อย่างมาก (obfuscator JavaScript แบบดั้งเดิมจะให้ประโยชน์ส่วนหนึ่ง - แต่ไม่ใช่ในกรณีที่การปรับให้เหมาะสมนั้นขึ้นอยู่กับความสามารถของ GWT ในการทำการตัดกิ่งรายละเอียดและการวิเคราะห์เส้นทางโค้ด)

ตามที่กล่าวไว้โดยทั่วไปแล้วฉันหมายถึงการทำให้งงงวย - นั่นหมายถึงว่าลูกค้าที่ชอบด้วยกฎหมายจะสามารถช่วยคุณแก้ปัญหาของพวกเขาได้แม้ว่าพวกเขาจะมีทักษะการพัฒนาและสำเนาของ FireBug ก็ตาม คุณเป็นผู้แต่งดั้งเดิม - คุณรู้รหัสดีกว่าคนอื่นและนั่นทำให้คุณได้เปรียบในการแข่งขันกับคนที่พยายามวิ่งชนราคาถูก นอกจากนี้หากคู่แข่งรายใดทำเงินจริงจากสิ่งที่พวกเขาขโมยโดยไม่ได้รับอนุญาตนั่นจะเป็นการเปิดรับเงินนั้น (หรืออาจเพิ่มทุนทวีคูณ) ในคดีความ การแข่งขันที่ถูกกฎหมายและจริงจังจะไม่ผ่านเส้นทางนั้นและทำไมต้องเป็นห่วงเรื่องสายพันธุ์อื่น


2

เราใช้โค้ด Javascript (และฝั่งเซิร์ฟเวอร์) จำนวนมากสำหรับเว็บแอปพลิเคชันของเราและเราเลือกที่จะ "ทำให้งงงวย" Javascripts จะลบช่องว่างสีขาวตัวแบ่งบรรทัด ฯลฯ - นี่จะไม่ปกป้องรหัสของคุณจริงๆ แต่ทำให้อ่านและเข้าใจได้ยากมากและคนอื่น ๆ ส่วนใหญ่จะไม่รำคาญเนื่องจากความพยายามที่เกี่ยวข้อง

อย่างไรก็ตามเหตุผลที่เราทำเช่นนี้ไม่มากจนเราไม่ต้องการให้ใครคัดลอกบางส่วนของรหัสของเรา แต่เพื่อกีดกันคู่ค้า / ลูกค้าของเราที่เราส่งรหัสจากการปรับเปลี่ยนโดยตรงใน "ไฟล์ของเรา" (เพื่อ หลีกเลี่ยงปัญหาเมื่อติดตั้งการปรับปรุงครั้งต่อไป) ...

หมายเหตุ: การทำให้งงงวยมีข้อเสียอย่างหนึ่งที่คุณควรระวังแม้ว่า: ถ้าคุณจำเป็นต้องดีบักโค้ดสคริปต์นั้นคุณเองจะไม่สามารถทำงานกับกลุ่มข้อมูลข่าวสารที่ยุ่งเหยิงได้ดังนั้นการทำเช่นนี้จะเป็นการคัดลอกไฟล์ 'ที่อ่านได้' ไปยัง เซิร์ฟเวอร์ก่อน


2
ฉันจะไม่เรียกการจัดรูปแบบ Javascript ในเครื่องมือแก้ไขหรือใช้รูปแบบ "เครื่องพิมพ์สวย" เพื่อความพยายามอย่างมาก การลดสิ่งเหล่านั้นจะมีประโยชน์ในการลดแบนด์วิดท์ (เช่นลดขนาด) แต่นั่นคือทั้งหมด

หากไฟล์ Javascript มีขนาดใหญ่แสดงว่าเป็นความพยายามอย่างมาก นอกจากนี้ "เครื่องพิมพ์สวย" ทำงานได้ไม่ดี (หรือไม่ทำงานเลย) ในไฟล์ประเภท "หนึ่งบรรทัดมีรหัสทั้งหมด"

1

ไปตามสมมติฐานที่ว่า javascript ที่ดีอย่างพอเพียงใด ๆ จะถูกเลือกโดยคนอื่น ๆ แล้วแค่ว่ายน้ำกับกระแสน้ำและทำให้เกิดประโยชน์สูงสุด

ตบใบอนุญาตที่อนุญาตให้ใช้ในขณะที่ต้องการตัวอย่างเช่นการระบุแหล่งที่มา อาจมีประโยคที่ไม่ใช่เชิงพาณิชย์เช่นครีเอทีฟคอมมอนส์บางรุ่นเช่นกันถ้าคุณต้อง


1

แอปพลิเคชันส่วนใหญ่ของคุณควรเป็นฝั่งเซิร์ฟเวอร์ Javascript ควรจัดการกับสิ่ง GUI และการโต้ตอบอย่างง่ายกับเซิร์ฟเวอร์ หากรหัส Javascript ของคุณมีตรรกะของแอปพลิเคชันเพียงพอที่คุณกังวลเกี่ยวกับคนที่ขโมยมันแสดงว่าคุณอาจทำอะไรผิดพลาด


0

หากคุณมีความลับทางการค้าคุณสามารถย้ายส่วนที่บอบบางที่สุดของรหัสไปยัง ActionScript (Flash) มันเป็นภาษาเดียวกับจาวาสคริปต์และมันถูกเก็บไว้ในรูปแบบโทเค็น


0

หากคุณกังวลเกี่ยวกับแฮ็กเกอร์ฮาร์ดคอร์ที่ขโมยรหัสของคุณขออภัยไม่มีสิ่งใดที่คุณสามารถทำได้ แต่มีวิธีที่จะทำให้มันไม่สะดวกสำหรับโจรที่ไม่เป็นทางการ วิธีที่ค่อนข้างง่ายในการทำคือโหลดชิ้นส่วนที่ใช้XMLHttpRequestและชิ้นส่วนeval(); สิ่งนี้อาจถูกปลอมแปลงเป็น (หรือรวมอยู่ใน) บางสิ่งที่ได้รับข้อมูล JSON และใช้เพื่อเติมข้อมูลในหน้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.