Javascript кеширование и защита? - PullRequest
2 голосов
/ 27 августа 2011

Я пишу JavaScript, который генерирует некоторые данные.Я намерен использовать его как бесплатное веб-приложение, открытое для всех, кто хочет его использовать.

Но у меня было много времени и усилий, чтобы написать этот сценарий (в основном потому, что я хочу, чтобы он использовался в личных целях иЯ не мог найти ничего эффективного и возобновил как это).Я начинающий разработчик, и я знаю, что невозможно защитить или запутать скрипт, потому что вам даже не нужно другое приложение для декодирования запутанной информации, есть много методов, и самый ленивый - просто найти слово "eval" в jsфайл и заменить его на «предупреждение».Когда вы открываете бум html-страницы, вы получаете всплывающее окно со всем декодированным кодом ...

Я спрашиваю, есть ли какой-либо способ предотвратить, когда пользователь "сохранит как ..." страницу сфайлы браузера, javacript и css не сохраняются в структуре.В прошлом я пытался сохранить некоторые страницы с помощью браузера, и я мог сохранять только html-файл (и иногда даже не со всей html-информацией, я подозреваю, что были iframes), без js и без css ... Я пытался с некоторымизагрузчики веб-сайтов (sitesucker, deepvacumm и т. д.), и даже с помощью этих загрузчиков я не смог загрузить файлы.Единственным способом было «осмотреть» страницу, загрузить ее вручную и создать структуру папок вручную.

Как я уже сказал, я хочу предоставить этот скрипт совершенно бесплатно в качестве службы (я даже куплю домен для него)) потому что я сделал это с любовью.Моя единственная просьба (чтобы получить какую-то личную гордость) состоит в том, что, когда люди хотят использовать это, они приходят на мой сайт и делают это в режиме реального времени, и если они «сохранить как ...» страницу, они могут сохранить сгенерированную информациюкоторые не сохраняют сценарий, поэтому они снова вернулись, чтобы воспользоваться услугой.

Может ли кто-нибудь помочь с некоторыми советами и информацией.Ссылки, советы, профессиональные и личные хитрости?

Ответы [ 4 ]

2 голосов
/ 27 августа 2011

Я думаю, что невозможно запретить доступ к коду Javascript в браузере. Я также думаю, что путем минимизации кода JS, например, с помощью компилятора Google Closure (опция ADVANCED) вы максимально защищаете свой код. Хотя код можно скопировать как есть, его нельзя понять или изменить с разумными усилиями.

0 голосов
/ 27 августа 2011

Технического решения вашей проблемы не существует: если пользователь сможет выполнить ваш javascript, ему придется каким-то образом его скачать.Какое бы решение ни было выбрано, любой, кто обладает достаточными знаниями о Firebug или инспекторе Webkit, сможет получить сценарий.Вы можете запутать его, пока я его минимизирую, но это не помешает кому-либо использовать его как есть.

Решение вашей проблемы является законным, а не техническим.Если вы прямо заявите в своем заголовке Javascript, что скрипт имеет ограничительную лицензию, любой, кто его копирует, нарушит закон.Если вы обнаружите, что кто-то делает это, вы можете:

  • попросить его удалить скрипт с их сайта
  • угрожать предъявить иск?

(кстати, если я могу высказать личное мнение, есть большая личная гордость за то, что я раздаю код, который каждый может использовать повторно ... вы можете указать свое имя и ссылку на свой сайт в заголовке скрипта: удаление уведомлений об авторстве и авторских правах считается очень плохой формой (и потенциально незаконной) *

0 голосов
/ 27 августа 2011

Преобразование вашего кода в сценарий на стороне сервера (PHP, Python, C # и т. Д.).Это единственный способ убедиться, что ваши пользователи не смогут «украсть» вашу работу.

Мой браузер должен в конечном итоге декодировать JavaScript, и в этот момент он мне тоже доступен, и естьнет способа предотвратить это, вы можете только сделать это сложнее.

Но суть в следующем: зачем вам это делать?Если вам нужна только «личная гордость», не лучше ли загрузить свой код на совместный сайт, например github или SourceForge , где другие люди могут оценить вашу работу и, возможно, даже внести свой вклад вэто?

Кроме того, если вы делитесь своим кодом по лицензии, такой как GPL или CC, каждый, кто использует ваш код, должен отдать вам должное (да, его можно просто украсть, но это возможно и в вашем сценарии)).

0 голосов
/ 27 августа 2011

Вы можете загрузить все файлы JavaScript / CSS через один файл JavaScript (загрузчик), например так.Таким образом, загрузчики должны выполнить JavaScript, прежде чем они смогут узнать, какие файлы JavaScript / CSS включены, что я не думаю, что они делают.Как я уже сказал в своих комментариях, я не совсем уверен, работает ли это!

HTML:

...
<script src="loader.js"></script>
<!-- no other JavaScript/CSS here -->
...

loader.js:

window.onload = function() {
    var head = document.getElementsByTagName('head')[0]; // the <head>

    var scriptElement = document.createElement('script'); // create <script>
    scriptElement.src = 'file1.js';
    head.appendChild(scriptElement); // add <script> to <head>

    var linkElement = document.createElement('link'); // create <link>
    linkElement.setAttribute('rel', 'stylesheet');
    linkElement.href = 'file1.css';
    head.appendChild(linkElement); // add <link> to <head>
}
...