Обратите внимание, что методы, применяемые к паролям, здесь не применимы. Вы можете хранить пароль с солью и хэшированием (хотя ценность этого может быть оспорена), но это не работает для телефонных номеров.
Если кто-то взломает ваш сервер, он может сделать все, что может сервер. Это должно включать восстановление номера телефона, но не включает восстановление пароля, если он хорошо хешируется. Так что номер телефона - это только частный случай защиты конфиденциальных данных.
Если телефонные номера действительно являются единственными конфиденциальными данными в приложении, то вы можете посмотреть на блокирование той части приложения, которая отправляет тексты, и асимметричное шифрование телефонных номеров. В другом процессе (или на другом компьютере) запустите приложение, в котором есть ключ для расшифровки номеров телефонов. Интерфейс этого приложения может иметь одну функцию, принимающую зашифрованное нет и сообщение для отправки. Сделайте это приложение простым, тестируйте и проверяйте сопли. Или скрывайте его от внешнего мира, или используйте аутентификацию, чтобы доказать, что запрос действительно пришел из вашего основного приложения, или и то, и другое.
Ни БД, ни основная часть приложения не способны расшифровывать номера телефонов (например, вы не можете их искать), но они могут зашифровать их для добавления в БД.
Общая методика называется «Разделение привилегий», выше приведен только один пример.
Обратите внимание, что телефонные номера обычно должны быть дополнены случайными данными перед шифрованием (например, посылка хешированного пароля). В противном случае можно ответить на вопрос «является ли зашифрованный номер телефона X?», Не зная секретного ключа. Это не может быть проблемой из-за POV спамеров, которые крадут ваш список рассылки, но это проблема из-за того, что POV утверждает, что ваши телефонные номера надежно хранятся, поскольку это означает, что атака методом перебора становится возможной: их всего несколько миллиардов номера телефонов, и может быть возможно сузить это для данного пользователя.
Извините, это не дает прямого ответа на ваш вопрос: я не знаю, есть ли PHP-фреймворк, который поможет реализовать разделение привилегий.
[Изменить, чтобы добавить: на самом деле мне приходит в голову, что под заголовком «сохранить привилегированное приложение простым» вы можете вообще не захотеть использовать фреймворк. Это зависит от того, считаете ли вы, что более или менее вероятно, что вы оставите ошибки в небольшом объеме кода, который вам действительно нужен, чем авторам фреймворка, чтобы оставить ошибки в гораздо большем (но более широко используемом) объеме кода, который они ' мы написали. Но это чрезмерное упрощение.]