У меня есть мобильное приложение, которое отправляет данные в базу данных MySQL с помощью PHP. Я хочу использовать функцию AES_ENCRYPT в файле PHP для шифрования моих данных на сервере MySQL. У меня нет большого опыта в шифровании данных.
Защитит ли этот метод мои данные? Если нет, то какие другие методы я могу использовать для защиты своих данных?
Я прочитал учебник, в котором говорится, что ключ будет храниться в файле PHP, является ли этот метод безопасным и есть ли способ защитить свой ключ от взлома?
Вы можете создать хранимую процедуру и иметь там ключ. Тогда ключ не будет жить в вашем PHP. На самом деле это не вопрос PHP. Ни вопрос по андроиду. Вам следует более подробно остановиться на этом, возможно, он больше подходит для security.stackexchange.com.
@user3783243 user3783243 Хранение ключа на сервере MySQL, возможно, хуже - взлом там дает злоумышленнику и ключ, и зашифрованный текст, тогда как хранение ключа на сервере PHP (при условии, что это два изолированных сервера) - нет.
@LukeJoshuaPark Нарушение PHP передаст учетные данные серверу mysql. Если это скомпрометировано, то и mysql.
@user3783243 user3783243 Да, но нарушение только сервера MySQL не приведет к раскрытию ключа, если он хранится на сервере PHP. Однако, согласно вашему предложению, взлом MySQL приведет к раскрытию как зашифрованного текста, так и ключа. Что еще хуже!
@LukeJoshuaPark PHP также выставит и то, и другое, что то же самое? Нарушение mysql будет зависеть от того, какой пользователь был взломан и каковы были разрешения.
Я думаю, вы неправильно понимаете, что я говорю. Я никогда не говорил о взломе PHP. Только нарушение MySQL - и я говорю, что гораздо лучше, если ключ не будет на сервере MySQL, если это нарушение произойдет!
Всем спасибо, я уже говорил, что у меня меньше знаний в информационной безопасности, @LukeJoshuaPark чем я занимаюсь, я собираю данные от участников для исследования, мне и мне нужно защитить конфиденциальность этой информации, что мне сказали заключается в том, что я полагаюсь на уровень безопасности университетских серверов, и мне приходится шифровать данные, чтобы защитить информацию участников. в одном руководстве объяснялось использование функции aes_encrypt, и я хотел знать, подойдет ли это для моей проблемы.
Этот вопрос в конечном итоге возвращает нас к управлению ключами — ключ должен храниться как где-то. Где вы храните ключ, зависит от требуемой степени безопасности.
В вашем сценарии (вы упоминаете университет) я бы сказал, что хранения ключа на вашем PHP-сервере (нет сервер базы данных) будет «достаточно».
Затем защита ключа зависит от того, насколько хорошо защищен этот PHP-сервер.
Я рекомендую вам выполнять шифрование в вашем PHP-коде, а не с помощью AES_ENCRYPT
— это не позволит серверу базы данных узнать, что такое ключ, и означает, что взлом сервера базы данных не раскроет никакой информации.
Вас также может заинтересовать статья этот репозиторий, в которой показано, как безопасно шифровать и расшифровывать данные в PHP.
Большое спасибо, это очень полезно.
Вы немного забегаете вперед. Сначала определите точно, от какой атаки вы хотите защитить себя — нет смысла реализовывать кучу мер безопасности против атаки, которая может даже не существовать!