Можно ли передавать номер телефона в теле POST-запроса для получения данных пользователя?
Что проверяют
Отличаете ли вы вопрос о транспорте от вопроса о персональных данных. Номер телефона это прямой идентификатор человека, и интервьюер смотрит, вспомните ли вы про следы, которые он оставляет в логах и витринах, а не только про «включите HTTPS».
Как отвечать
Технически да: тело POST это обычное место для параметров, при HTTPS оно шифруется целиком вместе с заголовками. Практическая причина предпочесть тело строке запроса в том, что URL оседает везде: журналы веб-сервера и прокси, история браузера, заголовок реферера, трассировки и мониторинг. Тело туда по умолчанию не попадает, поэтому персональные данные в строке запроса нежелательны.
Дальше ответ уже не про протокол, а про данные:
- телефон это персональные данные, и в России их обработка регулируется профильным законом, а не только европейскими нормами, про которые принято вспоминать;
- запрос допустим только от авторизованного вызывающего, иначе эндпоинт превращается в перебор номеров: нужны ограничение частоты и одинаковый ответ на существующий и несуществующий номер;
- в аналитику, события и обучающие выборки уходит суррогатный идентификатор, а не сам номер. Признак, построенный на телефоне, легко утаскивает в модель то, чего там быть не должно;
- в трассировках и дампах запросов поле маскируется, иначе номер всё равно окажется в хранилище логов.
Где спотыкаются
Считают HTTPS достаточной мерой. Он закрывает канал, но не решает, кто вправе спросить чужой номер и что произойдёт с этим номером дальше.
Уходят в общие слова про шифрование при хранении. Номер обычно нужен для поиска, поэтому вместо лозунга стоит сказать про детерминированный хэш с солью для поиска и отдельное хранение самого значения.
Забывают про перебор. Эндпоинт, отдающий данные по номеру, без ограничения частоты и с разными ответами на найденный и ненайденный номер это готовый инструмент проверки чужой базы.