Друзья, хотел бы посоветоваться с вами по вопросу хранения в базе номеров телефонов пользователей. На вопрос: с юридической стороны являются ли телефоны (без ФИО, только обычный аккаунт на сайте) персональными данными или нет, четкого ответа я получить так и не смог.
Соответственно, неясно, как лучше хранить эти номера в базе — в открытом виде или шифровать. Если шифровать, то каким алгоритмом? Обычный md5(), полагаю, прекрасно брутится. Как поступить правильней?
Можно использовать следующую схему:
1) хранить в открытом виде до подтверждения через SMS.
2) После подтверждения задача борьбы с фейковыми аккаунтами выполнена и открытый номер телефона уже не нужен. Теперь вычисляете хэш стойкой на текущий момент функцией и храните только её.
3) А если нужно будет восстановить пароль от аккаунта, прислав его на SMS, то для это предлагаете ввести номер телефона, вычисляете его хэш, сравниваете с хранимым и, если совпадает — отсылаете информацию для восстановления пароля в SMS на введённый номер.
4) По завершении восстановления пароля — введённый открытый номер уже не нужен и его можно удалить (хэш продолжаем хранить).
Если вы действительно собираетесь хранить номера телефонов, без какой либо привязки к персональным данным, которые деанонимизируют пользователя, то думаю это вы можете делать спокойно, поскольку с таким же успехом я могу обзвонить номера и выяснить какие из них живые. В противном случае, при наличии любой дополнительной информации о владельце вы уже скорее всего нарушаете закон о персональных данных.
Но откровенно говоря я не понимаю зачем вам номера телефонов без всякой другой информации. Даже без того как обращаться к владельцу телефона.
Ну зачем нужны телефоны это уже вопрос целей проекта. В вебмани например тоже можно заходить через номер телефона.
Обычная кодировка в md5 или sha1 Вам точно не подойдет, т.к. там просто цифры их легко расшифруют. Я обычно в таких случаях прибегаю к простейшей криптографии типа