Как проверять введенные пользователем данные?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Как проверять введенные пользователем данные?... Expand / Collapse
Автор
Сообщение
08.12.2004 22:38
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.05.2003 20:08
Сообщ.: 125, Visits: 1 376
При заполнении формы юзер вводит данные. Чтобы сервак не взломали, рекомендуется проверять данные на наличие спец символов. Кто как это делает? Есть советы или рекомендации?
Сообщ. #848160
08.12.2004 22:42
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.10.2007 4:11
Сообщ.: 219, Visits: 1 804
regulr expressions
Сообщ. #848161
09.12.2004 16:14
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.05.2003 20:08
Сообщ.: 125, Visits: 1 376
очень содержательно. надеюсь в магазине на ваш вопрос о цене продавец ответит: "она в базе компьютера" и вы получите то, что дали мне. какой смысл было отвечать?
Сообщ. #848234
09.12.2004 18:24
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Смотря как будут использоваться полученные от пользователя данные.
Если будут выводиться в браузер (как в гостевой книге, например), то нужно в полученной строке заменять
< на &lt;
> на &gt;
& на &amp;
" на &quot;

Если же будут использоваться при операциях с файлами (что не рекомендуется!), то нужно проверять на наличие спец. смволов или последовтельностей типа
..
''
|
>
<
\
/
\x00 (символ с кодом 0)
Сообщ. #848258
09.12.2004 18:31
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.05.2003 20:08
Сообщ.: 125, Visits: 1 376
То есть просто делать поиск или использовать оператор замены? Как там его, ~tr// ?
Сообщ. #848260
09.12.2004 18:35
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
В первом случае "молча" заменять, во втором проверять наличие "опасных" символов и выдавать сообщение об ошибке и дать возможность исправить введенные данные.
Сообщ. #848264
10.12.2004 15:35
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 07.02.2005 15:40
Сообщ.: 17, Visits: 188
При добавлении в базу, например mySQL нужно заменять системные символы на их ANSI-код или перед ними ставить \

Без регулярных выражений тут сложно.
Вот статья:
http://www.webdocs.ru/articles/article160/
Сообщ. #848408
17.12.2004 11:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 13.07.2006 17:05
Сообщ.: 124, Visits: 1 356
Вот хорошая функция для очистки данных:
sub clean_value {
my $Tmp = shift;
return '' unless defined $Tmp;
$Tmp =~ s|&|&amp;|g;
$Tmp =~ s|<!--|&#60;&#33;--|g; $Tmp =~ s|-->|--&#62;|g;
$Tmp =~ s|<script|&#60;script|ig;
$Tmp =~ s|>|&gt;|g;
$Tmp =~ s|<|&lt;|g;
$Tmp =~ s|"|&quot;|g;
$Tmp =~ s!^\s+!!;
$Tmp =~ s!\s+$!!;
$Tmp =~ s| | &nbsp;|g;
$Tmp =~ s!\|!&#124;!g;
$Tmp =~ s||<br>|g;
$Tmp =~ s|\$|&#036;|g;
$Tmp =~ s|\r||g;
$Tmp =~ s|\_\_(.+?)\_\_||g;
$Tmp =~ s|\\|&#92;|g;
$Tmp =~ s|!|&#33;|g;
$Tmp =~ s|\'|&#39;|g;
return $Tmp;
}

Работаем с данными так:

my $param=clean_value(param('some_input'));

Теперь можно не переживать за опасные символы.
Эта функция очень хорошо подойдет для гостевых книг, форумов и проч.


PerlMonks.Org.Ru.... coming soon
Сообщ. #849236
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 12:09