@dev123

Как сделать коробочную версию сайта?

Стоит задача - сделать из сайта коробочную версию для продажи клиентам.

Сайт написан на php. Требования заказчика - чтоб у клиента после покупки не было доступа к правкам исходного кода сайта. А также при развертывании сайта на сервере клиента у него была возможность добавлять пользователей на сайт через локальную сеть, а также через интернет.

Отсюда вопрос - как все это дело организовать?
Пока на ум приходит - завернуть сайт в виртуальные боксы (Virtualbox, VMWare, может еще в какие-то).

А как быть с защитой php-исходников от правок? А также максимально упростить настройку сети после развертывания, чтоб можно было добавлять пользователей?
Сейчас на сайте реализовано добавление пользователей через интернет.

Может кто-то уже сталкивался с подобной задачей?
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 7
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
В таких задачах для клиента арендуется хостинг, выдается доступ с запретом на чтение файлов и запрет на ftp/ssh доступ. Пусть только продлевает действие домена и хостинга.
Теперь у меня вопрос: как вообще можно добавлять пользователей через локальную сеть? Речь о phpmyadmin? Или что бы он без подключения к интернету у себя дома добавлял пользователей в бд, которая лежит на удаленном сервере в интернете?
Проще всего сделать админку в которой покупатель и будет добавлять клиентов, но если бд будет лежать не у него на пк, то делать это локально не представляется возможным.
Ответ написан
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
http://sanasol.ws/2017/06/22/%d0%ba%d0%be%d0%b3%d0...

1. Если у вас действительно супер-пупер секретный алгоритмы которые никто не знает или может повторить.
Использовать исключительно модель SaaS или производить вычисления через ваш сервер(но продукт всё равно будет стоять на сервере клиентов).

2. Если никаких алгоритмов взлома гугла/пентагона/игил/телеграма там нет.
Просто отдавать открытые исходники для работы.

3. Если вы пишите очень плохой код и вам стыдно или хороший код, но вы жадный.
Используйте SaaS.
Технологии позволяют привязать домен клиента к вам, создать ему отдельное рабочее пространство(виртуалку/сервер) и всё что только придумать можно.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
или как Битрикс или так
Ответ написан
Sanes
@Sanes
Программист, способный написать приличную CMS обычно такие вопросы не задаёт.
Отсюда вывод: найдите нормального программиста.
Ответ написан
@abmanimenja
SaaS - услуга как сервис.
Ответ написан
Комментировать
@rPman
Постановка задачи в общем случае не решаемая, но можно сделать процесс правки исходников и базы данных на столько дорогой, что это перестанет иметь смысл.

Одно слово - обфускация. С кодом даже немного просто (можно просто скомпилировать код в jvm/llvm/бинарный код процессора, и это уже создаст море проблем), вот с базой данных по сложнее, так как вам потребуется уже на этапе разработки внедрять в код приложения (в виде прослойки или сразу) шифрование данных и сокрытие имен таблиц (чтобы были безликие наборы символов).

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

p.s. есть есть доступ в интернет и много клиентов, можно заставить пользователей (их инсталляций приложения само собой) следить друг за другом и контролировать неправомерные изменения, но это уже из разряда создания proof-of-что-нибудь и блокчейна ;) ха ха но именно это позволило решить проблему неправомерных изменений 'амбарной' книги bitcoin и аналогов.

p.p.s. если бы вы были моим исполнителем, идущим на подобные шаги, уволил бы нахрен, и всем бы в округе рассказал ;)
----

Про коробочную версию, у php есть штаный механизм упаковки всего проекта в phar файл (это zip файл), мало того, в 99% случаев для запуска приложения достаточно только php, запустив его с ключом -S поднимется упрощенный веб сервер (не подходит для высокой нагрузки). Так же при использовании sqlite база данных будет идти в виде одного файла, итого - весь проект можно передать двумя файлами и короткой инструкцией по установке, или же базу данных можно создавать автоматически при первом запуске.
Ответ написан
Комментировать
@satas
dev123 можете поделиться опытом, как в итоге решили вопрос? Сейчас тоже рассматриваю упаковку всего бэкенда в phar-файл, как советовали выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы