2012-02-26 4 views
1

Я хочу отправить запрос HTTPS в Java и отправить пароль в GET или POST-данные. Это безопасно? Могу ли я просто поместить пароль в поле POST/GET в виде обычного текста и который будет защищен, когда я буду использовать https? Или я должен сделать что-то еще?Как отправить безопасные пароли через GET/POST?

+0

Можно ли предположить, что вы подключаетесь непосредственно к месту назначения, и что мы можем исключить нападение «человек в середине»? – DNA

ответ

1

Обычная практика заключается в том, чтобы отправить имя пользователя аутентификации + пароль в качестве заголовка авторизации с кодировкой 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).

http://en.wikipedia.org/wiki/HTTP_header.

http://en.wikipedia.org/wiki/Base_64.

+0

Дополнительно: Base64 был изобретен изначально, чтобы обеспечить передачу двоичной передачи данных по системам, которые принимают только 7-битное кодирование. –

5

Всегда отправляйте пароль, используя POST. https гарантирует, что он будет зашифрован во время отправки.