ถ้าฉันเขียนแอพ Javascript ฝั่งไคลเอ็นต์ (มีการโต้ตอบกับเซิร์ฟเวอร์เล็กน้อย) ฉันจะป้องกันไม่ให้ผู้อื่นคัดลอกไฟล์ Javascript ไปยังไซต์ของตัวเองได้อย่างไร ฉันควรที่ทั้งหมดหรือไม่
ถ้าฉันเขียนแอพ Javascript ฝั่งไคลเอ็นต์ (มีการโต้ตอบกับเซิร์ฟเวอร์เล็กน้อย) ฉันจะป้องกันไม่ให้ผู้อื่นคัดลอกไฟล์ Javascript ไปยังไซต์ของตัวเองได้อย่างไร ฉันควรที่ทั้งหมดหรือไม่
คำตอบ:
คุณควรสนใจไหม เลขที่
ทำไม? เพราะไม่มีอะไรที่คุณสามารถทำได้เกี่ยวกับเรื่องนี้
บางคนได้แนะนำการทำให้งง สิ่งนี้ใช้ได้กับ Java และ. Net แต่ Python, Javascript และ Perl เป็นข้อความธรรมดาทั้งหมดจึงมีน้อยมากที่คุณสามารถทำได้ คุณค่าในเว็บไซต์ของคุณนั้นไม่ต้องสงสัยเลยว่าฝั่งเซิร์ฟเวอร์จึงไม่ต้องกังวลกับ Javascript
สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือทำให้รหัสสับสนเพื่อให้ผู้อื่นแก้ไขได้ยาก แน่นอนคุณเก็บสำเนาต้นฉบับไว้
เป็นโบนัสรหัสที่ยุ่งเหยิงควรมีขนาดเล็กลงและทำให้โหลดเร็วขึ้น
ทำไมคุณถึงกังวล ฉันเห็นเหตุผลสองประการที่อาจเป็นไปได้: 1) คุณกำลังเขียนไลบรารี JavaScript เชิงพาณิชย์ การแก้ไข: รับแผนธุรกิจอื่น ๆ libs JavaScript มีแนวโน้มที่จะฟรี บางทีคุณสามารถสร้างรายได้ในช่องเล็ก ๆ ขององค์กร แต่พวกเขามักจะไม่ใช้รหัสที่คัดลอกมาอย่างผิดกฎหมายอยู่ดี
2) คุณกังวลว่าคู่แข่งของคุณกำลังจะคัดลอกเว็บไซต์ของคุณ หากพวกเขาทำคุณสามารถมั่นใจได้ว่าคุณจะก้าวไปข้างหน้าหนึ่งก้าว มีแนวโน้มที่พวกเขาจะเขียนโค้ดของตัวเองและคัดลอกลักษณะและพฤติกรรมของเว็บไซต์ของคุณและไม่มีอะไรที่จะช่วยคุณได้ยกเว้นว่าจะได้รับสิทธิบัตรซอฟท์แวร์โง่ ๆ เช่น amazon เพียงคลิกเดียวช็อปปิ้ง
IOW ไม่ต้องกังวล แจ้งประกาศลิขสิทธิ์ให้ผู้อื่นบอกคุณว่าพวกเขาใช้สิ่งของของคุณ ถ้ามีคนทำเช่นนั้นให้ใช้ความจริงที่ว่าคุณได้สร้างห้องสมุดที่มีประโยชน์เพื่อให้ได้รับเครดิตในหมู่คนที่น่าจะเป็นประโยชน์ในระยะยาว
ไม่อย่าลองและ "ปกป้อง" ภาษาสคริปต์ฝั่งไคลเอ็นต์ การทำให้งงงวยไม่ทำงาน การลดขนาดเป็นการใช้ (แต่การต่อต้านการละเมิดลิขสิทธิ์ไม่ใช่หนึ่งในนั้น)
ฉันก็จะแนะนำกับลดรูปรหัสของคุณจนกว่าคุณจะได้รับความนิยมมากมายต่อวันซึ่งเป็นกิโลไบต์พิเศษไม่กี่ต่อคำขอจะเป็นความแตกต่างที่เห็นได้ชัด (และทำอย่างนั้นเมื่อคุณบีบอัดภาพทั้งหมดที่คุณกำลังใช้อย่างถูกต้องซึ่งจะช่วยให้คุณประหยัด ไกลเกินกว่าสองสาม KB การตั้งค่าแคชอย่างเหมาะสมและอื่น ๆ ) ..
แม้ว่าคุณจะย่อเล็กลง / ทำให้งงงวย Javascript คนก็ยังสามารถคัดลอกไปยังเว็บไซต์ของตัวเองได้เล็กน้อย มันจะยากขึ้นเล็กน้อยในการปรับเปลี่ยน แต่ขึ้นอยู่กับสิ่งที่สคริปต์ทำซึ่งอาจไม่สำคัญ ตัวอย่างเช่นตัวแก้ไข WMD ที่ผู้คนกล่าวถึงนั้นมีให้สำหรับการใช้สาธารณะลดขนาด
Obfuscation และ minification สามารถที่คล้ายกัน แต่ถ้าคุณจะต้องทำให้งงงวยรหัสที่คุณจะต้องเขียนโดยทั่วไปส่วนใหญ่ของมันจะทำให้มันยากที่จะเข้าใจ .. นี้จะทำให้รหัสซับซ้อนมากขึ้นและไกลยากที่จะจัดการกับ (สำหรับ คุณ) ดังนั้นจะแนะนำข้อบกพร่อง .. หาก Javascript ของคุณกลายเป็นบั๊กกี้นั่นจะป้องกันการละเมิดลิขสิทธิ์เนื่องจากไม่มีใครต้องการใช้ (หรือขโมย) มัน .. แต่ผิดพลาดนั่นไม่ดี
หนึ่งในสิ่งที่ยอดเยี่ยมเกี่ยวกับ Javascript คือทุกคนสามารถคลิกขวา / ดูแหล่งที่มาและเรียนรู้จาวาสคริปต์โดยดูที่รหัสที่ทำงานอยู่หากคุณกังวลเกี่ยวกับคนที่ดูรหัสและคัดลอกมันเว็บ / Javascript isn ' ภาษาที่ถูกต้อง
ฉันขอแนะนำให้ใส่ความคิดเห็นในตอนเริ่มต้นของ.js
ไฟล์และ<script>
บล็อกทั้งหมดของคุณพร้อมข้อมูลของคุณ (ชื่อเว็บไซต์) และใบอนุญาตบางประเภท ขึ้นอยู่กับว่ารหัสคืออะไรบางทีอาจจะมีข้อความแจ้งว่า "ถ้าคุณใช้รหัสนี้ทั้งหมดหรือบางส่วนในโครงการโปรดแจ้งให้เราทราบ!" อาจมีประสิทธิภาพมากกว่า "อย่าใช้รหัสนี้เพื่อจุดประสงค์อื่นใดตลอดไป!"
คุณสามารถทำให้งงงัน (หรืออย่างน้อยลดขนาด) รหัสเพื่อกีดกันสิ่งนี้ (แม้ว่ามันจะไม่ผ่านพ้นสำหรับคนที่มีเวลาตัวอย่างเช่น deobfuscation ของ StackOverflow ของตัวแก้ไข WMD (แต่นี่เป็นเหตุผลที่ดี!))
รหัสใด ๆ ที่คุณใส่ส่วนหน้าจะเป็นสาธารณะและพร้อมให้ทุกคนได้เห็น / ใช้
ทำไมต้องเป็นห่วงเลย? หากสคริปต์ของคุณคุ้มค่ากับการขโมยคุณสามารถทำให้พวกเขาเป็นโอเพ่นซอร์สและได้รับความช่วยเหลือในการสร้างสคริปต์
คุณไม่สามารถทำได้จริง ๆ เพราะเป็นภาษาที่ตีความที่ส่งมอบเสมอในรูปแบบซอร์สโค้ด การทำให้งงงวยจะไม่ช่วยอะไรมากหากโจรสลัดมีแรงจูงใจเพียงพอ
(ตัวอย่าง - ตัวอย่าง: ตัวแก้ไข StackOverflow WMDซึ่งอาจเป็น - พูดอย่างเคร่งครัด - ถูกมองว่าเป็นการละเมิดลิขสิทธิ์แม้ว่าฉันรู้ว่า Jeff และ Dana มีความตั้งใจดีเท่านั้น)
ไม่คุณไม่ควรกังวลเลย
หากธุรกิจของคุณขึ้นอยู่กับความลับของรหัส JavaScript ของคุณอาจมีปัญหาร้ายแรงเกิดขึ้น
มิฉะนั้นก็ไม่ต้องกังวล อาจเป็นไปได้ว่าคุณควรลองลดรหัส JavaScript ของคุณเพื่อให้หน้าโหลดเร็วขึ้น
ฉันใช้GWT (Google Web Toolkit)สำหรับการเขียนเว็บแอปพลิเคชันซึ่งโค้ดทั้งหมดเขียนด้วยภาษาจาวาและสามารถทำการดีบั๊กและทดสอบด้วยเครื่องมือที่ใช้ Java เป็นศูนย์กลาง แต่จะถูกแปลงเป็นจาวาสคริปต์สำหรับการเปิดตัว
เมื่อไม่ได้อยู่ในโหมดPRETTY
หรือDETAILED
จาวาสคริปต์ที่สร้างโดย GWT นั้นได้รับการปรับแต่งและทำให้งงมากทำให้ไม่สามารถทำวิศวกรรมย้อนกลับได้อย่างมาก (obfuscator JavaScript แบบดั้งเดิมจะให้ประโยชน์ส่วนหนึ่ง - แต่ไม่ใช่ในกรณีที่การปรับให้เหมาะสมนั้นขึ้นอยู่กับความสามารถของ GWT ในการทำการตัดกิ่งรายละเอียดและการวิเคราะห์เส้นทางโค้ด)
ตามที่กล่าวไว้โดยทั่วไปแล้วฉันหมายถึงการทำให้งงงวย - นั่นหมายถึงว่าลูกค้าที่ชอบด้วยกฎหมายจะสามารถช่วยคุณแก้ปัญหาของพวกเขาได้แม้ว่าพวกเขาจะมีทักษะการพัฒนาและสำเนาของ FireBug ก็ตาม คุณเป็นผู้แต่งดั้งเดิม - คุณรู้รหัสดีกว่าคนอื่นและนั่นทำให้คุณได้เปรียบในการแข่งขันกับคนที่พยายามวิ่งชนราคาถูก นอกจากนี้หากคู่แข่งรายใดทำเงินจริงจากสิ่งที่พวกเขาขโมยโดยไม่ได้รับอนุญาตนั่นจะเป็นการเปิดรับเงินนั้น (หรืออาจเพิ่มทุนทวีคูณ) ในคดีความ การแข่งขันที่ถูกกฎหมายและจริงจังจะไม่ผ่านเส้นทางนั้นและทำไมต้องเป็นห่วงเรื่องสายพันธุ์อื่น
เราใช้โค้ด Javascript (และฝั่งเซิร์ฟเวอร์) จำนวนมากสำหรับเว็บแอปพลิเคชันของเราและเราเลือกที่จะ "ทำให้งงงวย" Javascripts จะลบช่องว่างสีขาวตัวแบ่งบรรทัด ฯลฯ - นี่จะไม่ปกป้องรหัสของคุณจริงๆ แต่ทำให้อ่านและเข้าใจได้ยากมากและคนอื่น ๆ ส่วนใหญ่จะไม่รำคาญเนื่องจากความพยายามที่เกี่ยวข้อง
อย่างไรก็ตามเหตุผลที่เราทำเช่นนี้ไม่มากจนเราไม่ต้องการให้ใครคัดลอกบางส่วนของรหัสของเรา แต่เพื่อกีดกันคู่ค้า / ลูกค้าของเราที่เราส่งรหัสจากการปรับเปลี่ยนโดยตรงใน "ไฟล์ของเรา" (เพื่อ หลีกเลี่ยงปัญหาเมื่อติดตั้งการปรับปรุงครั้งต่อไป) ...
หมายเหตุ: การทำให้งงงวยมีข้อเสียอย่างหนึ่งที่คุณควรระวังแม้ว่า: ถ้าคุณจำเป็นต้องดีบักโค้ดสคริปต์นั้นคุณเองจะไม่สามารถทำงานกับกลุ่มข้อมูลข่าวสารที่ยุ่งเหยิงได้ดังนั้นการทำเช่นนี้จะเป็นการคัดลอกไฟล์ 'ที่อ่านได้' ไปยัง เซิร์ฟเวอร์ก่อน
ไปตามสมมติฐานที่ว่า javascript ที่ดีอย่างพอเพียงใด ๆ จะถูกเลือกโดยคนอื่น ๆ แล้วแค่ว่ายน้ำกับกระแสน้ำและทำให้เกิดประโยชน์สูงสุด
ตบใบอนุญาตที่อนุญาตให้ใช้ในขณะที่ต้องการตัวอย่างเช่นการระบุแหล่งที่มา อาจมีประโยคที่ไม่ใช่เชิงพาณิชย์เช่นครีเอทีฟคอมมอนส์บางรุ่นเช่นกันถ้าคุณต้อง
แอปพลิเคชันส่วนใหญ่ของคุณควรเป็นฝั่งเซิร์ฟเวอร์ Javascript ควรจัดการกับสิ่ง GUI และการโต้ตอบอย่างง่ายกับเซิร์ฟเวอร์ หากรหัส Javascript ของคุณมีตรรกะของแอปพลิเคชันเพียงพอที่คุณกังวลเกี่ยวกับคนที่ขโมยมันแสดงว่าคุณอาจทำอะไรผิดพลาด
หากคุณมีความลับทางการค้าคุณสามารถย้ายส่วนที่บอบบางที่สุดของรหัสไปยัง ActionScript (Flash) มันเป็นภาษาเดียวกับจาวาสคริปต์และมันถูกเก็บไว้ในรูปแบบโทเค็น
หากคุณกังวลเกี่ยวกับแฮ็กเกอร์ฮาร์ดคอร์ที่ขโมยรหัสของคุณขออภัยไม่มีสิ่งใดที่คุณสามารถทำได้ แต่มีวิธีที่จะทำให้มันไม่สะดวกสำหรับโจรที่ไม่เป็นทางการ วิธีที่ค่อนข้างง่ายในการทำคือโหลดชิ้นส่วนที่ใช้XMLHttpRequest
และชิ้นส่วนeval()
; สิ่งนี้อาจถูกปลอมแปลงเป็น (หรือรวมอยู่ใน) บางสิ่งที่ได้รับข้อมูล JSON และใช้เพื่อเติมข้อมูลในหน้า