Какой контент не может быть безопасно передан по FTP в двоичном режиме? - PullRequest
6 голосов
/ 02 января 2011

FTP преимущественно обеспечивает два режима передачи: ASCII и BINARY.

Режим ASCII, как правило, предназначен для текстового контента, а режим BINARY, как правило, предназначен для передачи контента как есть, хотя и для передачи текстового контента.в режиме BINARY часто совершенно безопасен.

Для правильной работы переданных сценариев CGI требуется режим ASCII - сценарий CGI, передаваемый в режиме BINARY, часто приводит к HTTP 500 при выполнении.

ЕстьЕсть ли другие типы контента, которые, как известно, требуют передачи в режиме ASCII?Какой контент будет «разрываться» при передаче в режиме BINARY, который не «ломается» при передаче в режиме ASCII?

Ответы [ 2 ]

12 голосов
/ 02 января 2011

Двоичный режим будет работать для любых данных.

Проблема со сценариями CGI заключается в том, что они часто редактируются в Windows с окончаниями строк CRLF, и серверы ожидают, что окончания строк будут просто LF.Режим ASCII решает это.Но современные серверы больше не заботятся об этом, и вы также можете конвертировать окончания строк на стороне сервера, если у вас есть нужные инструменты, а также вы можете указать редактору на стороне клиента использовать LF как конец строки, если вам нужно(по крайней мере Notepad ++, кажется, делает это).

Я никогда не видел, чтобы charset преобразование происходило в режиме ASCII, просто потому, что ASCII является кодировкой.

Обновление: режим ASCII может использоваться для преобразования данных между EBCDIC и ASCII при подключении к мэйнфреймам.В этом случае двоичный режим потребует ручного преобразования после передачи.

0 голосов
/ 02 января 2011

Я считаю, что режим ASCII был создан для передачи меньшего количества данных через модемное соединение (для передачи данных используется 7 бит). Таким образом, режим BINARY может использоваться для чего угодно, даже для текста или любого другого контента, который может быть передан в режиме ASCII, но он использует немного большую пропускную способность :)

Также с введением UTF вы уже не можете безопасно передавать текст с помощью ASCII; так реально - современные ftp клиенты используют только BINARY режим ...

РЕДАКТИРОВАТЬ: Мой ответ не является правильным о режиме передачи 7 бит. Вот что википедия говорит об ascii vs binary: «Режим ASCII: используется для текста. Данные преобразуются, если необходимо, из символьного представления отправляющего хоста в« 8-битный ASCII »перед передачей и (опять же, если необходимо) в символьное представление принимающего хоста. Как следствие, это Режим не подходит для файлов, которые содержат данные, отличные от простого текста.

Режим изображения (обычно называемый двоичным режимом): отправляющий аппарат отправляет каждый байт файла за байтом, а получатель сохраняет поток байтов по мере его получения. Поддержка режима изображения рекомендована для всех реализаций FTP. "

Обратите внимание на последнее предложение, в котором говорится, что для всех передач рекомендуется двоичный режим ...

ТАК ВНИЗ используйте BINARY для всех переводов, и все будет в порядке.

Надеюсь, это поможет, Moszi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...