Итак, пытаясь защититься от дизоворов, я написал очередной вариант системки защиты. Сейчас она оптимизирована под защиту исполняемых js функций. А конкретно сейчас она защищает один единственный алерт. Вот сам код скрипта защиты.
Первый, написавший в этой теме текст алерта в скрипте, получит от меня награду. Принцип работы защиты, если догадаетесь, описывать в личку.
Code
<script> function scram(u){var a,c,i,d;c=u.split('-');d=location.host.split('');a=0;for(i=1;i<c.length;i++){c[i]=String.fromCharCode(5555-c[i]-d[a].charCodeAt());a=a==d.length-1?0:++a}eval(c.join(''))}scram('-5343-5331-5337-5341-5334-5404-5419-4400-4421-4361-4353-4368-4363-4355-4378-4372-4359-4372-436 6-4419-4341-5406-4353-4353-4362-4365-4376-4367-4370-4377-4433-4364-4353-4368-5406-5399-5414'); </script>
Об этой теме:
Предлагаю посвятить тему защите от копирования js. Предлагайте свои идеи и варианты, давайте ссылки.
О ходе мыслей:
Я достаточно много читал по данному вопросу и достаточно много затратил времени на свои варианты его решения. Во многих источниках на вопрос "как защитить javascript?" дается лаконичный ответ "Никак, невозможно.". Обосновывают этот ответ достаточно веско: javascript попадает в кэш браузера, а оттуда его можно спокойно забрать.
Ну, хочу заметить, скрипт можно запретить кэшировать. Затем, если у нас есть свой сервер, то перед отдачей скрипта пользователю, можно проверять содержание запроса на предмет адресата и в зависимости от того, кто запрашивает скрипт, наш сайт или сторонний компьютер, уже решать, отдавать скрипт или нет. Это в идеале.
Что делать, если сервера своего у нас нет? Остается последний вариант, изменять сам скрипт так, чтобы он отличал вора от простого юзера. Или мешал вору воровать. Вот тут то и включается фантазия!
Один из вариантов - js обфускатор или компрессор с уникальной возможностью сжатия, например "Packer". Он хорош всем, кроме одного. никакой защиты он не дает. Спустя 10 минут я нашел в сети дешифратор для Packer и до сих пор успешно и часто им пользуюсь.
Другой вариант - закодировать js и позволять ему раскодироваться только на собственном сайте. Это тоже можно реализовать несколькими путями. Вот идеи, возникшие у меня:
1. Кроссдоменные передачи данных невозможны. Значит первое что должен попробовать скрипт, так это загрузить какой либо файл из корневой директории сайта, для которого написан. если это получилось - скрипт в безопасности и его можно запускать. Уязвимость: умный пользователь.
2. Проверить хост на котором открыт скрипт. Если хост свой - скрипт можно открывать. Уязвимость: умный пользователь.
3. Мысль пришла в голову только сейчас.. сейчас попробую и опишу... Попробовал - получилось. Значит так. Ещё вариант, на главной странице написать маленький скриптик, котрый бы запрашивал, с помощью автоматической вставки ссылки на скрипт, ключ с сайта, для раскодирования основного скрипта. Уязвимость: умный пользователь, извращенец.
И это основная проблема. Кроме недориперов-плагиатчиков есть люди которые профессионально этим занимаются и знают что идеальной защиты нету, и если надо и рипнут, и раскодируют, и стырят.
Vanofuture, да согласен. В этом большая проблема - достаточно вставить вместо запроса хоста сам хост. В приниципе единственная надежда на то, что полезет всякая школота и не увидит очевидного. А вообще идей нет, как ещё можно защитить, похитроумней? Бесплатные обои.
Vanofuture, а между тем, если не знать ключа - взломать практически нереально. значит можно развивать тему, только придумать иной ключ, точнее способ его получения. Бесплатные обои.
Aleko, привязывать к сайту как только можно. Адрес, элементы на страницы, их атрибуты. Из них делать уникальный ключ. А ещё очень помогает если скрипт сам по себе сложный. У меня были случаи что даже когда риперы добирались до скрипта, они ничего не могли сделать и забрать себе, ибо скрипт был сложный: десятки функций переплетённых между собой, привязанные к дизайну сайта и его элементам, и его адресу.
Quote (Aleko)
между тем, если не знать ключа
Обычно тырят прямо с сайта, и ключ можно достать так как скрипт выполняется.
Ну, хочу заметить, скрипт можно запретить кэшировать. Затем, если у нас есть свой сервер, то перед отдачей скрипта пользователю, можно проверять содержание запроса на предмет адресата и в зависимости от того, кто запрашивает скрипт, наш сайт или сторонний компьютер, уже решать, отдавать скрипт или нет. Это в идеале.
Обходится на раз-два. Привет, Vanofuture
Quote (Aleko)
Обосновывают этот ответ достаточно веско: javascript попадает в кэш браузера, а оттуда его можно спокойно забрать.
Бредовый аргумент. Невозможно защитить JS-код, потому что он выполняется в незашифрованном виде! Любой, даже самый защищенный скрипт в конечном счете выполняется в исходном виде с JS синтаксисом. У нас пока нет возможности компилировать JS-скрипты а-ля php (Кто знает - тот поймет, кто нет - пусть гуглит).
Как мы видим из написанного в первом посте, ничто не остановит мастера на пути к Вашему скрипту.
Quote (Aleko)
Vanofuture, а между тем, если не знать ключа - взломать практически нереально. значит можно развивать тему, только придумать иной ключ, точнее способ его получения.
Глупо дешифровывать у клиента под носом. Клиент, в таком случае, не должен видеть ничего, кроме защифрованного кода. Т.е. ни исходного, ни конечного. В JS такое невозможно.
P.S.
Code
alert('Принадлежно
Сообщение отредактировал Бармалей - Воскресенье, 23.08.2009, 07:28
Бармалей, ты как то категорично к этому подходишь. Само собой некомпилируемый язык скрыть полностью невозможно, да ещё и язык, выполняющийся на клиенте. Вопрос в том, как уберечь прочтение исходников от как можно большего процента пользователей. Бесплатные обои.
Кроме недориперов-плагиатчиков есть люди которые профессионально этим занимаются и знают что идеальной защиты нету, и если надо и рипнут, и раскодируют, и стырят.
А кто говорил про основной процент пользователей? Основному проценту пользователей пофиг, что у Вас в исходнике (исключение - мегасофт). Алеко же говорил про как можно больший процент, который может достигать 100% (только не у JS).
Сообщение отредактировал Бармалей - Воскресенье, 23.08.2009, 17:13
Бармалей, я имел основной процент пользователей-плагиатчиков. А вообще зависит ещё от самого сайта. Например для uCoz-сайтов основной враг — недоплагиатчики.
Quote (Бармалей)
исключение - мегасофт
Например в случае с хэлпером, основной процент плагиатчиков оттуда.