The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Кратко о безопасности в CGI скриптах на Perl
- Главное правило - всегда явно проверять все переменные полученные из внешних источников 
    (cgi-параметры, cookie, переменные окружения, имя файла и путь (при листинге директории по readdir));

- Вырезать спецсимволы в переменных используемых в сис. функциях (open(),
system(), ``) и обращениях к sql.
    вырезание: s/[^\w\d_\-.]//g или tr/;<>*|?`&$!#{}[]:'\/\n\r\0// для open(), system(), ``.
    не забывать про \0 (передают %00, который воспринимается как конец стоки)
    Пример: $var="../../etc/passwd|\0"; open(F, "/home/test/$var.txt")

- при открытии файла на чтение в open() всегда указывать "<$file";

- Осторожность при использовании переменной внутри eval() и regex (/\Q$var\E/
иначе можно подставить ?{код}).

- Нельзя проверять числовые параметры через "if ($var > 0)", так как может
пройти $var="123;somecode";
 
23.01.2004
Ключи: policy, perl, rule, regex, file, password, cgi, sql / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Perl / Функции и модули в Perl

Обсуждение [ RSS ]
  • 1, Vict0r (?), 00:37, 12/08/2004 [ответить]  
  • +/
    "Нельзя проверять числовые параметры через "if ($var > 0)""
    А как их тогда проверять?
     
     
  • 2, leonid sopov (?), 12:34, 21/09/2005 [^] [^^] [^^^] [ответить]  
  • +/
    после того как получили или в момент получения
    1) $var=int($var);
    2) $var=~s/\D//g; /лучше все же 1 вариант/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру