#php #security #localhost #crm #offline
#php #Безопасность #localhost #crm #Не в сети
Вопрос:
Я создал CRM Saas для своего клиента, используя PHP, jQuery и HTML.
Недавно у моего клиента возникли некоторые проблемы с его сетью в офисе, и весь бизнес отключился, потому что CRM не работает, когда сеть отключена,
Я хочу создать решения для подобных ситуаций,
например, я подумал, что, возможно, я создам локальную копию crm и сделаю синхронизацию между базой данных на сервере и локальной базой данных, и в тот момент, когда сеть будет отключена, я перенаправлю пользователя на локальную копию CRM
и когда сеть снова запустится, я синхронизирую локальную базу данных с базой данных сервера и перенаправлю пользователя в CRM, которая находится на сервере.
но у меня есть 1 проблема с этим решением,
я не хочу, чтобы у пользователя были исходные файлы CRM,
есть ли какая-то причина для защиты этих файлов от него?
Спасибо!
Ответ №1:
Вы можете установить локальный сервер с вашей ОС, Apache, MySQL и т. Д. И зашифровать локальный диск, чтобы клиент не мог получить доступ к файлам в любое время:
Ссылка для Ubuntu: https://help.ubuntu.com/community/FullDiskEncryptionHowto
Если все ваши веб-документы (PHP, HTML и т. Д.) Являются статическими, То я предполагаю, что ваша база данных — это единственное, что нужно будет синхронизировать. Я бы посоветовал пойти по пути Active-> Standby:
Ссылка для MySQL: https://grox.net/sysadm/misc/mysql_active-standby_master-master.replication
Таким образом, в основном вам нужно будет настроить локальную базу данных вашего сайта на автономный режим, но при этом синхронизировать данные с активного экземпляра. Когда локальная БД не может взаимодействовать (через сердцебиение или ICMP echo), локальная БД становится активной. Для этого также потребуется небольшая настройка DNS или вам нужно будет настроить это сердцебиение в PHP для каждого подключения к БД.
Рассматривая вышесказанное для отдельной базы данных, я был бы более склонен отказаться от размещенного и сохранить его локальным. Просто предоставьте себе любой доступ, необходимый для их поддержки (FTP, VNC и т. Д.).
Ответ №2:
Вы можете зашифровать код. Есть несколько способов сделать это, оба влияют на сам PHP-код или платформу, на которой выполняется код.
Обфускаторы PHP — всего несколько, вы можете найти больше в Google
- http://www.zend.com/en/products/zend-guard
- http://phpshadow.com/
- http://www.fopo.com.ar / — бесплатно
Другой способ — установить VirtualBox в помещении клиента и запустить приложение в Ubuntu / Fedora / WhateverDistroYouLike box с зашифрованной файловой системой. Всякий раз, когда вам нужно что-то обновить, вы можете легко создать новую версию виртуальной машины, протестировать ее на своей стороне, а затем просто установить ее на месте клиента (занимает несколько минут). Зашифрованные контейнеры Docker также могут стоить внимания!