Протоколы защиты данных

protokoly zashhity dannyh Сервер PyMailCGI

Обратите внимание, что в исходном программном коде сценария onVi- ewPswdSubmit (пример 16.7) введенный пароль при добавлении в словарь параметров передается функции encode, благодаря чему появляется в URL гиперссылок в зашифрованном виде. Пароли также кодируются для передачи (с использованием последовательностей %, если это необходимо) и позднее декодируются и расшифровываются в других сценариях при необходимости обратиться к учетной записи POP. Шифрование пароля с помощью encode лежит в основе политики безопасности PyMailCGI.

В современных версиях Python имеется стандартный модуль ssl, поддерживающий защищенные сокеты (Secure Sockets Layer, SSL) с помощью своих функций-оберток, если необходимая библиотека встроена в интерпретатор. Эта поддержка автоматически шифрует передаваемые данные, обеспечивая их безопасность в Сети. К сожалению, по причинам, которые мы будем обсуждать далее в этой главе, когда дойдем до модуля secret.py (пример 16.13), это решение не является универсальным для передачи паролей в PyMailCGI. Коротко скажу лишь, что вебсервер, реализованный на языке Python и используемый здесь, не поддерживает HTTPS — защищенную версию протокола HTTP. Поэтому была разработана альтернативная схема, уменьшающая вероятность кражи информации об учетной записи почты при передаче ее по Сети.

Вот как она действует. Когда сценарий вызывается из формы страницы ввода пароля, он получает только один входной параметр: пароль, введенный в форму. Имя пользователя импортируется из модуля mailconfig, установленного на сервере, — оно не передается вместе с незашифрованным паролем, потому что перехват такой комбинации злоумышленником значительно облегчил бы ему жизнь.

Чтобы передать имя пользователя и пароль следующей странице как информацию о состоянии, этот сценарий помещает их в конец URL страницы списка почтовых сообщений, но только после шифрования пароля с помощью secret.encode — функции из модуля, расположенного на сервере, и который может быть различным для каждого места, где установлена программа PyMailCGI. В действительности PyMailCGI написана так, что она не обязана ничего знать о функции шифрования — поскольку шифрование обеспечивается отдельным модулем, можно выбрать тот, который вам больше нравится. Если вы не станете публиковать реализацию своего модуля шифрования, то зашифрованный пароль, передаваемый вместе с именем пользователя, не принесет пользы злоумышленнику.

В результате PyMailCGI обычно не передает и не получает одновременно имя пользователя и пароль в одной операции, если только пароль не зашифрован с помощью выбранной вами функции. Это несколько ограничивает полезность программы (поскольку на сервере можно определить имя пользователя только для одной учетной записи почты), но альтернатива в виде двух страниц — одной для ввода пароля и другой для ввода имени пользователя — была бы еще менее дружелюбной. В целом при желании читать свою почту с помощью этой системы в том виде, как она реализована, необходимо установить ее файлы на своем сервере, поправить mailconfig.py, чтобы он отражал параметры конкретной учетной записи, и изменить модуль шифрования secret.py по желанию.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий