Я хочу отправить запрос HTTPS в Java и отправить пароль в GET или POST-данные. Это безопасно? Могу ли я просто поместить пароль в поле POST/GET в виде обычного текста и который будет защищен, когда я буду использовать https? Или я должен сделать что-то еще?Как отправить безопасные пароли через GET/POST?
ответ
Обычная практика заключается в том, чтобы отправить имя пользователя аутентификации + пароль в качестве заголовка авторизации с кодировкой Base64.
Base64 кодировка не является шифрованием. Вы все равно должны обеспечить, чтобы он прошел SSL/https.
кодек Base64 - это средство, гарантирующее, что endianess и другие особенности маршрутизаторов, коммутаторов и других сетевых посредников не преобразуют пароль или любые двоичные данные, которые будут транспортироваться в облаке сетей.
Этот кодек работает, воспринимая поток двоичных данных как последовательность отдельных текстовых символов. Но символы не 8-битные, а 6-битные. 64 текстовых символа используются как обычные A-Z, a, z, 0-9, +, /. С А, имеющий значение 0 и/имеющий значение 63.
Заголовок аутентификации HTTP обычно имеет этот базовый формат аутентификации:
Авторизация: Basic кодировке base64-имя пользователя-пароль
Где base64-кодированный -username-password имеет имя пользователя макета: пароль передается в коде base64 (который является классом Java util, btw).
Дополнительно: Base64 был изобретен изначально, чтобы обеспечить передачу двоичной передачи данных по системам, которые принимают только 7-битное кодирование. –
Всегда отправляйте пароль, используя POST. https гарантирует, что он будет зашифрован во время отправки.
Можно ли предположить, что вы подключаетесь непосредственно к месту назначения, и что мы можем исключить нападение «человек в середине»? – DNA