PERL

Practical Extraction and Report Language —
«практический язык для извлечения данных и составления отчётов»

Защищенность секретных файлов

Пароли, настройки скриптов и любая другая информация, хранится в отдельных файлах, размещенных в каталоге, где находятся web-страницы и скрипты, бывает и так, что секретную информацию содержат и в теле программы. В итоге это позволяет просматривать содержимое файлов в экране стандартного браузера. Достаточно узнать имя и подготовить необходимый URI.

Существенная проблема для злоумышленника – получить информацию о пути к файлам. Если возможность просмотра www–директорий сервера ограничена или запрещена, единственным способ – работать методом последовательного перебора. При осмысленных именах файлов перебор не займет слишком много времени. Ошибки в реализации сетевых служб, да и самого сервера облегчает получить доступ к содержимому директории.

Решением данной проблемы видится в размещении секретных файлов таким образом, чтобы web-пользователи не имели прав доступа к ним или настроить web-сервер на запрет доступа к файлам, и он сам не видел этих файлов.

Секретные данные можно помещать в Perl–скрипт. При грамотной конфигурации web–сервера пользователи не смогут увидеть содержимое рабочего скрипта, а только результаты его деятельности. Скрипт сможет работать с самим собой как со стандартным текстовым документом. Для удобства используют лексему DATA, доступная через манипулятор.

Подобный прием гарантирует высокую степень защищенности данных, однако не всегда срабатывает. Web–сервера иногда из-за каких-то причин могут отображать не результаты работы, а содержимое самого скрипта.

Для злоумышленников основным объектом их охоты являются пароли, они зашифровываются через встроенный в языке Perl функцией crypt.

Простой пример программы аутентификации с функцией crypt смотрите ниже. В нем не используются привязки, из-за чего идентичные пароли могут иметь одинаковые хеши, что значительно снижает устойчивость к любому взлому с лобовыми переборами.

print "Password:"; #запрос пароля пользователя

$passwd=<>;

chop $passwd; #удаление символа \n

$encrypt=crypt($paswsd,"sl"); #вычисления хеша пароля

open (fh,"passwd") die; #открытие файла паролей

while($pass=){ #поиск подходящего пароля

chop $pass; #удаление символа \n

if ($pass eq $encrypt){ #подходящий пароль?

print "Password ok\n";

$flag=1; #пароль найден, установить флаг

break; #и выйти из цикла

}

}

if (!$flag) # если пароль не найден - выход

{print "BAD password!\n"; die;}

Главная

Perl-скрипты

Android

Карта сайта