П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 5655 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 7931 раз(а).

Учебник HTML.
Просмотров 4660 раз(а).

Руководство по PHP5.
Просмотров 1255 раз(а).

Хостинг через призму DNS.
Просмотров 6558 раз(а).

Подборка текстов стандартных документов.
Просмотров 57300 раз(а).

Учебник PHP - Самоучитель
Просмотров 4911 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 10982 раз(а).

Внешние атаки...
Просмотров 6596 раз(а).

Учебник PHP.
Просмотров 3978 раз(а).

SSI в примерах.
Просмотров 1005 раз(а).






 
 
| Добавить в избранное | Сделать стартовой Project.Net.Ru | Помощь





Программирование на Perl

Обработка и фильтрация входящих данных

Есть два метода: либо вы указываете при помощи регулярного выражения запрещенные символы, либо вы явно определяете допустимые символы. Программы из примеров должны были вас убедить, что очень легко забыть отфильтровать потенциально опасные символы, поэтому второй метод предпочтительней.

На практике вот что надо сделать: во-первых проверить, что запрос содержит только допустимые символы. Затем поставить бэкслэши перед допустимыми символами, которые являются опасными.

#!/usr/bin/perl -wT

# filtre.pl

#  Переменные $safe и $danger содержат символы, которые
#  не представляют и представляют опасность, соответственно.
#  Добавьте или удалите из них символы, чтобы изменить работу фильтра.
#  Данные в $input считаются верными, только если все символы содержатся
#  среди допустимых.

use strict;

my $input = shift;

my $safe = '\w\d';
my $danger = '&`\'\\|"*?~<>^(){}\$\n\r\[\]';
#Замечание:
#  '/', пробел и символ табуляции специально не включены в список

if ($input =~ m/^[$safe$danger]+$/g) {
    $input =~ s/([$danger]+)/\\$1/g;
} else {
    die "Недопустимые символы в $input\n";
}
print "input = [$input]\n";


Скрипт определяет два множества символов:

  • $safe содержит те, которые не представляют опасности (здесь только цифры и буквы);
  • $danger содержит символы, которые допустимы, но потенциально опасны.

Любой запрос, содержащий символ, не принадлежащий обоим множествам, немедленно отвергается.

[ Назад ] [ Содержание ] [ Вперед ]



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru