Прогрессивные веб-приложения и личные учетные данные SQL - PullRequest
0 голосов
/ 02 июня 2018

Мне поручено преобразовать PHP-приложение в прогрессивное веб-приложение.Это влечет за собой преобразование существующей логики PHP в JavaScript, который выполняется на стороне клиента.

Однако приложение PHP содержит конфиденциальную информацию, включая учетные данные SQL, которые никогда не должны передаваться.Это усложняет конвертацию, потому что одним из самых больших требований прогрессивного веб-приложения является Offline First или возможность работать без подключения к Интернету и / или не замедлять работу даже при наличии подключения к Интернету.

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

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

Я часами искал решения в Интернете, но ничего из того, что я нашел, не является достаточно актуальным.Так как же разработчикам обеспечить, чтобы учетные данные SQL и другая конфиденциальная информация никогда не отображались в прогрессивном веб-приложении?

РЕДАКТИРОВАТЬ: Я должен уточнить это, хотя понимаю, что синхронизация локальных данных сСерверные данные - это предпочтительное поведение прогрессивных веб-приложений, в этом конкретном случае мне явно запрещено делать это.Данные должны быть конфиденциальными.

1 Ответ

0 голосов
/ 04 июня 2018

Чтобы ответить на исходный вопрос о том, как безопасно хранить пароли БД на стороне клиента, «Вы не можете» .Все на стороне клиента не для конфиденциальной информации, как пароль БД на стороне сервера.

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

Что если вы используете: Если вы храните «пароль БД» в приложении PWA или любом другом веб-приложении, пользователь может получить пароль, например, с помощью инструментов Chrome Dev, и использовать егоподключаться к БД напрямую, чтобы получить все данные в ней, а не только его.

Решение: PHP - это язык сценариев на стороне сервера.Когда вы конвертируете это в HTML / JS, серверный код от него останется для вас, чтобы вы могли снова поместить его на серверной стороне и представить данные с помощью веб-сервисов в PWA.

При загрузке данных: Кэширование явно не эквивалентно загрузке. Подробнее читайте здесь и, если вы все еще не хотите кешировать, вы используете режим «Только сеть», как описано в той же ссылке, и используете другие аспекты PWA, такие как уведомления, установите на домашний экран.

...