Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна проверка вводимых данных 
V
    Опции темы
ежик
  Дата 28.12.2005, 06:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 19.9.2005
Где: Южно-Сахалинск

Репутация: нет
Всего: 1



Привет пипл.

Вот если мы используем MySQL
и все вводимые значения мы пропускаем через:
Код
#
$dbh->quote();
#
$dbh->selectrow_array('SELECT * FROM 1 WHERE id=?', undef, param(id));
#
$sth = $dbh->prepare('SELECT * FROM 1 WHERE id=?');
$sth->execute(param(id));


Вводимые данные "новости безопасности" используется почти все символы
Стоит ли проверять вводимые данные.
Если стоит то какие именно надо вырезать????

smile smile
--------------------
Прежде чем задать вопрос прочитай инфу!!!
PM MAIL ICQ   Вверх
korob2001
Дата 28.12.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

Стоит ли проверять вводимые данные.

Полученные от пользователя данные, стоит проверять всегда.
Цитата

Если стоит то какие именно надо вырезать????

Для начала запускай программу с переключателем -T, очищай полученные данные по максимуму.
Заменяй все амперсанды на &
Заменяй все < на &lt;
Заменяй все > на &gt;
По возможности откажись от системных вызовов, слава богу в Perl такая возможность есть почти всегда.
Не вставляй полученный параметр в регулярные выражения и транслитерацию.
Пользуйся $dbh->quote()

Хотя наверное лучше всего указывать то, что можно пропустить.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
ежик
Дата 28.12.2005, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 19.9.2005
Где: Южно-Сахалинск

Репутация: нет
Всего: 1



Цитата
Для начала запускай программу с переключателем -T, очищай полученные данные по максимуму.

Если я использую mod_perl и OS винда
--------------------
Прежде чем задать вопрос прочитай инфу!!!
PM MAIL ICQ   Вверх
korob2001
Дата 28.12.2005, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Под виндой он тоже чудно работает. Думаю mod_perl тоже не помеха, хотя не уверен, никогда на нём не писал.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
sharq
Дата 28.12.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 2
Всего: 28



Вот так можно обабатывать полученные от пользователя данные.

Код

# замена html
sub unHTML($) {
    my $text = shift;
    # экранирование html
    my %ENT=('<'=>'lt','>'=>'gt','"'=>'quot');
    $text =~ s!([<>"])!&$ENT{$1};!g;
    $text =~ s|\&lt;!--|<!--|g;
    $text =~ s|--\&gt;|-->|g;
    # обработка \n, \r, \s
    $text =~ s|\n|[br]|g;
    $text =~ s|\r||g;
    $text =~ s|\s+| |g;
    # экранирование стоп-символов
    $text =~ s|\@|{et}|g;
    $text =~ s!\|!|!g;
    $text =~ s|\{|{|g;
    $text =~ s|\}|}|g;
    $text =~ s|\(|(|g;
    $text =~ s|\)|)|g;
    $text =~ s|\[|]|g;
    $text =~ s|\[|]|g;
    $text =~ s|\.|.|g;
    $text =~ s|\,|,|g;
    $text =~ s|\~|~|g;
    $text =~ s|'|'|g;
    $text =~ s|\?|?|g;
    $text =~ s|\+|+|g;
    $text =~ s|\#|#|g;
    $text =~ s|^\$+$|& # 3 6 \;|g;
    $text =~ s|\$|& # 3 6 \;|g;
    $text =~ s|\&|& # 3 8 \;|g;
    $text =~ s|\*|& # 8 7 2 7 \;|g;
    $text =~ s|\^|& # 7 1 0 \;|g;
    return $text;
}


+ для кажого поля нужно добавлять свою проверку, например, для поля чисел - необходимо оставить только цифры:
Код

s/\D//g;



smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.