Обратите внимание, что пароль в команде pass передается абсолютно в открытом виде. Это серьезная проблема. В каждой главе, где мы рассматриваем какой-либо сервис, доводится сталкиваться с открытой передачей данных. Ну что поделаешь, если на заре рождения Интернета никто не думал о хакерах. Теперь приходится изобретать разные методы, чтобы спрятать пароль.
Если ваш сервер обслуживает только анонимные соединения, то пароли могут передаваться как угодно. При такой аутентификации любой пользователь итак может подключиться к серверу, указав произвольный E-mail-адрес в качестве пароля. Но подобные серверы используются только с общедоступными ресурсами/файлами. При наличии важной информации доступ происходит по паролю, и необходимо сделать так, чтобы он шифровался. Для этого можно использовать stunnel или уже готовый протокол SFTP, который мы рассматривали в разд. 5.3.8 .
Отличное решение я видел на одном из публичных Web-серверов около 10 лет назад. Для того чтобы закачать данные на сервер, необходимо было зарегистрироваться, заполнив Web-форму с личными данными. Затем вам выдается пароль на доступ, который действует только в течение одной сессии. После этого пароль уничтожается, и повторное подключение становится невозможным. Файлы закачиваются в специальную директорию, в которую разрешена лишь запись. Самим файлам устанавливаются права только для чтения и записи, а выполнение остается недоступным. Таким образом, пароли можно передавать в открытом виде. Даже если хакер увидит его, подключиться не сможет.
Реализовать одноразовые пароли достаточно просто, если ваш сервер использует подключаемые модули аутентификации РАМ ( см. разд. 3.3.3 ).
После того как вы авторизовались на сервере, можно выполнять любые другие команды FTP-сервера. Но тут есть одна проблема — список директив зависит от сервера. Конечно же, есть определенные требования, которых придерживаются все производители, это основные команды, которые описаны в RFC (Requests for Comments, рабочие предложения). Так как возможности, предоставляемые стандартом, уже устарели, то разработчики Web-серверов начали добавлять свои функции, которые могут отличаться в разных версиях программ. Так что, если клиентская программа в каких-то ситуациях ведет себя не совсем корректно, то это еще не значит, что она плохая, просто она может быть несовместима с данным сервером.
Основные команды FTP-протокола вы можете увидеть в табл. 10.1. При работе через Telnet и для тестирования сервера они вам могут пригодиться.
Таблица 10.1. Команды FTP-протокола
| Команда |
Описание |
USER имя |
Используется при авторизации для указания имени пользователя |
PASS пароль |
Предназначена для указания пароля при авторизации |
SYST |
Вернуть тип системы |
HELP |
Предоставить список доступных для выполнения команд |
LIST |
Вывести список файлов и каталогов текущей директории |
PWD |
Возвратить текущую директорию |
CWD директория |
Сменить текущую директорию |
TYPE тип |
Указать тип передачи данных: A для ASCII, I — для бинарных файлов |
RETR параметр |
Скачать с сервера файл, указанный в качестве параметра |
STOR параметр |
Загрузить на сервер файл, указанный в качестве параметра |
ABOR |
Прервать последнюю FTP-команду или передачу данных |
QUIT |
Выйти из системы |
10.1.2. Сообщения сервера
В ответ на полученные команды сервер возвращает нам сообщения, по которым можно оценить результат работы. Уведомления состоят из числового трехзначного кода и необязательной текстовой части. Если для ответа требуется несколько строк, то в первой (после кода) стоит дефис, а в последней (после кода) — идет пробел.
Вы должны знать смысл числовых кодов, чтобы определить тип ошибки. Когда к вам за помощью обращается пользователь, зная значения кодов, можно определить причину сбоя и быстро решить проблему.
Значения первой и второй цифр кода ответа FTP-сервера можно увидеть в табл. 10.2 и 10.3 соответственно.
Таблица 10.2. Значения первой цифры в коде ответа FTP-сервера
| Код |
Описание |
| 1 |
Команда удачно запустилась, но еще не закончила свое выполнение, поэтому нужно дождаться ее окончания перед продолжением работы. Такие сообщения приходят во время выполнения длительных операций (например, запрос на передачу файлов). После завершения работы команды будет получено еще одно сообщение |
| 2 |
Команда выполнена удачно, можно продолжать работу и посылать новые директивы. Такие сообщения приходят в ответ на простые команды |
| 3 |
Команда выполнена удачно, но для завершения работы требуется дополнительная директива. Такие сообщения можно увидеть в ответ на операции, предусматривающие несколько действий, например, во время аутентификации, которая требует двух команд. Сообщение с кодом, начинающимся с цифры 3, появляется между отправкой команд USERи PASS |
| 4 |
Команда выполнена неверно, но результат может быть положительным, если повторить попытку позже. Сообщение может быть получено в случае, если сервер не в состоянии сейчас выполнить команду из-за выполнения другой операции |
| 5 |
Команда выполнена неверно. Это самый критичный ответ, который может быть при неверном синтаксисе директивы или неправильном задании параметров |
Таблица 10.3. Значения второй цифры в коде ответа FTP-сервера
Читать дальше
Конец ознакомительного отрывка
Купить книгу