Локальное веб-приложение PHP, как защитить пароль базы данных

Я пытаюсь защитить веб-приложение PHP, которое работает из локальной установки в стиле WAMP.

В настоящее время пароли к базе данных приложения находятся только в файлах .php. Я думал о том, чтобы зашифровать их, но любой человек может просто выполнить код, чтобы расшифровать их довольно легко.

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

Ваши мысли оценены.

Уточнение: База данных также находится на локальном ПК.


person Dan Chase    schedule 21.02.2019    source источник
comment
Является ли ваша база данных удаленной с точки зрения произвольного клиента, использующего ваше веб-приложение?   -  person scrowler    schedule 21.02.2019
comment
Существует МНОГО очень надежных внешних поставщиков аутентификации. Firebase и OAuth, и это лишь некоторые из них.   -  person Russ J    schedule 21.02.2019
comment
@RussJ, разве мне не нужно было бы хранить токен в программе? Возможно, я смогу просто зашифровать токен чем-то элементарным.   -  person Dan Chase    schedule 21.02.2019
comment
Это не глупый вопрос: от кого вы пытаетесь защитить пароль?   -  person Manngo    schedule 21.02.2019
comment
да. Я имею в виду, что с технической точки зрения ни одна система не защищена от взлома на 100%, но Firebase и OAuth открывают потенциальным хакерам трудный путь к успеху...   -  person Russ J    schedule 21.02.2019
comment
@Manngo На самом деле интересный вопрос, я не подумал об этом. Поскольку приложение используется в организации соревнований, я думаю, что самый большой риск заключается в том, что текущий пользователь узнает пароль, затем отправляется на соревнование и входит в базу данных через Wi-Fi. Я мог бы посмотреть на другие механизмы, но пароль, находящийся в файле .php, показался нам красным флажком.   -  person Dan Chase    schedule 21.02.2019
comment
@RussJ Я был бы склонен принять ваш ответ в моем случае, я мог бы сохранить зашифрованный токен во внешнем файле, а не в .php, а затем жестко закодировать провайдера для просмотра этого файла, чтобы PHP был вне его. Это не было бы на 1000% надежным, но, по вашему мнению, это сделало бы усилия значительными.   -  person Dan Chase    schedule 21.02.2019
comment
Кто-то однажды сказал мне, что кибербезопасность подобна погоне за голодающим и разъяренным черным медведем. Вы не можете остановить медведя, но вы можете установить медвежьи капканы, чтобы замедлить его. Чем больше ловушек вы расставите, тем лучше.   -  person Russ J    schedule 21.02.2019
comment
@RussJ Мне это нравится! Не уверен, хотите ли вы добавить свой комментарий в качестве ответа, я приму его, если мы продолжим в том же духе, модераторы могут закрыть вопрос для нас, но мне нужно было задать его, и я получил массу информации, которая мне нужна!   -  person Dan Chase    schedule 21.02.2019
comment
Выполнено!...........   -  person Russ J    schedule 21.02.2019
comment
Вы можете сохранить ключ в любом веб-API и получить токен доступа вместо ключа, когда приложение начинает использовать API... вместо хранения ключа в приложении я предпочитаю хранить токен доступа до некоторого времени....   -  person Sayed Mohd Ali    schedule 21.02.2019


Ответы (3)


Существует МНОГО очень надежных внешних поставщиков аутентификации. Firebase и OAuth, и это лишь некоторые из них. С технической точки зрения ни одна система не защищена от взлома на 100%, но Firebase и OAuth открывают потенциальным хакерам трудный путь к успеху.

person Russ J    schedule 21.02.2019
comment
проблема возникнет, когда вы захотите аннулировать токен при выходе из системы или изменении пароля... - person Sayed Mohd Ali; 21.02.2019

  1. В этом случае вы можете использовать переменную ENV, создать файл .env, сохранить в нем пароль и вызвать его в приложении.

  2. Вы можете создать переменную среды в конфигурационном файле Apache и вызывать оттуда в своем приложении, что более безопасно.

person Nandit    schedule 21.02.2019

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

person Mark Tomlin    schedule 21.02.2019