|
|
|
Supreme Being
      
участник
Last Login: 25.05.2003 20:08
Сообщ.: 125,
Visits: 1 376
|
|
| При заполнении формы юзер вводит данные. Чтобы сервак не взломали, рекомендуется проверять данные на наличие спец символов. Кто как это делает? Есть советы или рекомендации?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 12.10.2007 4:11
Сообщ.: 219,
Visits: 1 804
|
|
|
|
|
|
Supreme Being
      
участник
Last Login: 25.05.2003 20:08
Сообщ.: 125,
Visits: 1 376
|
|
| очень содержательно. надеюсь в магазине на ваш вопрос о цене продавец ответит: "она в базе компьютера" и вы получите то, что дали мне. какой смысл было отвечать?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
Смотря как будут использоваться полученные от пользователя данные. Если будут выводиться в браузер (как в гостевой книге, например), то нужно в полученной строке заменять < на < > на > & на & " на "
Если же будут использоваться при операциях с файлами (что не рекомендуется!), то нужно проверять на наличие спец. смволов или последовтельностей типа .. '' | > < \ / \x00 (символ с кодом 0)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 25.05.2003 20:08
Сообщ.: 125,
Visits: 1 376
|
|
| То есть просто делать поиск или использовать оператор замены? Как там его, ~tr// ?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| В первом случае "молча" заменять, во втором проверять наличие "опасных" символов и выдавать сообщение об ошибке и дать возможность исправить введенные данные.
|
|
|
|
|
Junior Member
      
участник
Last Login: 07.02.2005 15:40
Сообщ.: 17,
Visits: 188
|
|
При добавлении в базу, например mySQL нужно заменять системные символы на их ANSI-код или перед ними ставить \
Без регулярных выражений тут сложно. Вот статья: http://www.webdocs.ru/articles/article160/
|
|
|
|
|
Supreme Being
      
участник
Last Login: 13.07.2006 17:05
Сообщ.: 124,
Visits: 1 356
|
|
Вот хорошая функция для очистки данных: sub clean_value { my $Tmp = shift; return '' unless defined $Tmp; $Tmp =~ s|&|&|g; $Tmp =~ s|<!--|<!--|g; $Tmp =~ s|-->|-->|g; $Tmp =~ s|<script|<script|ig; $Tmp =~ s|>|>|g; $Tmp =~ s|<|<|g; $Tmp =~ s|"|"|g; $Tmp =~ s!^\s+!!; $Tmp =~ s!\s+$!!; $Tmp =~ s| | |g; $Tmp =~ s!\|!|!g; $Tmp =~ s||<br>|g; $Tmp =~ s|\$|$|g; $Tmp =~ s|\r||g; $Tmp =~ s|\_\_(.+?)\_\_||g; $Tmp =~ s|\\|\|g; $Tmp =~ s|!|!|g; $Tmp =~ s|\'|'|g; return $Tmp; }
Работаем с данными так:
my $param=clean_value(param('some_input'));
Теперь можно не переживать за опасные символы. Эта функция очень хорошо подойдет для гостевых книг, форумов и проч.
PerlMonks.Org.Ru.... coming soon
|
|
|
|