Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка файла, или его части на целостность (защита контента) (https://javascript.ru/forum/misc/65775-proverka-fajjla-ili-ego-chasti-na-celostnost-zashhita-kontenta.html)

ice99 07.11.2016 09:21

Проверка файла, или его части на целостность (защита контента)
 
Добрый день.
Сделал небольшое веб-приложение, состоящее из допустим 5-ти файлов:

main.html (файл запуска )
- main.css (стили)
- main.js (код приложения)
- main2.js (еще код приложения)
- main.dat (данные приложения)

В принципе я МОГУ преобразовать эти 5-ть файлов в один работающий all.html (размером 2.5 Мб), если это будет необходимо.

Вопрос в чём:
Как максимально усложнить задачу его изменения и декомпиляции?

Поясню. Компания №1 делает полезное веб-приложение со своими данными (контакт ,логотип, и т.д.).
Компания №2 недолго думая скачивает все файлы, заменяет лого, контакты и т.д. Профит.

Про обфускацию знаю, но не сильно она меня останавливает ("ООО Ромашка" не сильно обфусцируешь то). Возникла идея как-то считать хеш\контрольную сумму\целостность\ и т.д. данных (либо main.dat, либо единственного html файла, к которому я могу всё свести).
Если данные не совпадают с контрольными - сюрприз.

Да, да, проверку можно вырезать, но при обфускации это уже сложнее.

Я не то что бы параноик ,просто интересно, есть ли какие-нибудь методики защиты веб-приложений?

Vadya 07.11.2016 10:52

Сто процентной защиты конечно быть не может, идеологически. Надо комбинировать. Так чтобы уровень квалификации ворующего, мог быть только выше порога самостоятельной разработки.

"Если данные не совпадают с контрольными - сюрприз."
Одна из моих фишек: при заходе на main.html ставится одноразовый ключ, который разрешает открыть один раз main.css. main.css обрабатываем как пхп. При попытке неестественного запроса, отдаем незначительно другой, с косяками. Все должно быть максимально нечитаемым. В main.css логируем неестественные запросы и анализируем.

PS насколько это эффективно применительно к css не знаю

ice99 07.11.2016 11:57

Цитата:

Сообщение от Vadya (Сообщение 434320)
PS насколько это эффективно применительно к css не знаю

Да css пусть берут. Основные моменты это main.js и main.dat

Всё -таки интересна идея сделать что-нибудь с единым "all.html", например создать ему в помощь main.php, без которого all.html не запускался бы.
Либо я пытаюсь изобрести вечный двигатель?

Vadya 07.11.2016 12:36

Цитата:

Сообщение от ice99
например создать ему в помощь main.php, без которого all.html не запускался бы

ну разницы то между этими файлами нет. Другое дело определить критерии, по которым будет или не будет запускаться, но это невозможно.

Про css я просто пример привел, тоже самое можно проделывать с любыми файлами. Зависит от поведения браузеров, надо проверять. Когда лет 5 назад прятал так некоторые файлы, их можно было вытащить только из кэша оперы. Но перед этим надо было догадаться, что скачанный файл не совсем тот

Vadya 07.11.2016 12:46

Попробую проще написать: если пользователь произвел определенные правильные действия, то ему отдается один файл, если нет или открыл файл напрямую, то по тому же урлу похожий с косяками

как то так:

.htaccess:
AddType application/x-httpd-php .xxx
------
main.xxx:
if(условие совпадает) {
$file = '1.xxx';
} else {
$file = '2.xxx';
}
header('Content-type: application/.....xxx......;');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Content-Length: '.filesize($file));
ob_clean();
flush();
readfile($file);
exit;


если нгикс, не забыть пропускать запрос на апач


Часовой пояс GMT +3, время: 01:00.