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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения, Вырезать или само отпадёт. 
:(
    Опции темы
r
Дата 27.3.2005, 12:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Имеем строку
Код

if($param=~/[^A-Za-z]+/){
last;
}
.
Это проверка на отсутствие символов. Вопрос, стоит ли вырезать другие символы такие как:
\0,\,(,),!,@,#,$,%,^,&,* и т. д. Или не стоит, ведь всё равно при наличии посторонних символов программа завершится. Или лучше вырезать, так как можно это как-то обойти и тем самым получить несанкционированный доступ. Спасибо.
  Вверх
korob2001
Дата 27.3.2005, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не совсем понятно что ты хочешь. Даннуый код можно прочесть так:
Выйти из цикла если в переменной $param несколько, возможно один символ латинского алфавита.


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


Unregistered











Меня просто заинтересовало можно-ли через передачу параметров cgi-программе передать какие либо символы которые могли-бы изменить ход этой программы. Код который выше как раз и проверял параметр на наличие символов A-Za-z. Просто где-то читал что можно вставить
в html-форму примерно такой тег: <img source='http://zloi_dyadya/cgi-bin/spy.pl>. Поэтому я и задал такой вопрос. А вообще как ты проверяешь входные данные на наличие таких тегов и всего такого нежданного? Как ты контролируешь что запускаемые функции вызываются в той последовательности в какой ты и задумал? Спасибо.
  Вверх
korob2001
Дата 27.3.2005, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Я же, уже помоему тебе говорил, как я это делаю. Во первых, проверяй на то, что можно, а не на то, что нельзя.
Например, ты из-какого либо поля получаешь имя пользователя, которое может состоять как из одного слова так и из нескольких. Теперь давай подумаем какие символы можно пропустить. Так как имя может состоять только из сиволов какого-либо алфавита и пробелов, потому как мы допускаем ввод полного имени, из нескольких слов. Пишем такое регулярное выражение:
Код

#!/usr/bin/perl -w
use strict;
use locale;
# Обрати внимание на строку, точнее на её вид
my $param = "      пуПкин                вАсиЛий      сТеПанОвиЧ        ";

# Удалим все ненужные пробелы и переведём все символы в нижний регистр
# в каждом слове первый символ переведём в верхний регистр
$param = join(" ", map { ucfirst( lc( $_ ) ) } split(" ", $param));

# Проверим соответствует ли наша строка имени.
# Если в имени будет 4 слова, то условие будет ложно,
# если в именм будут какие либо символы кроме латинского
# и русского алфавита и пробелов - условие будет ложно.
if ( $param =~ /^(?:[A-Za-zА-Яа-я]+\s*?){1,3}$/ ) {
     print "Условие прошло, можно записывать в базу\n";
     print "На выходе получаем такую строку: $param\n";
} else {
     # Выводим ошибку
     print "Не верно указано имя";
}

Поэксперементируй с этим кодом, попробуй передать цифру или любой не допустимый символ или напиши в строке четвертое слово.
Удачи.

Это сообщение отредактировал(а) korob2001 - 27.3.2005, 15:38


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


Unregistered











Цитата(r @ 27.3.2005, 14:08)
Просто где-то читал что можно вставить
в html-форму примерно такой тег: <img source='http://zloi_dyadya/cgi-bin/spy.pl'>.

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

P.s. И вставки кода см. цитату.
  Вверх
korob2001
Дата 28.3.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

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

P.s. И вставки кода см. цитату.

Ничего не понял, что ты этим хотел сказать???? smile


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


Unregistered











Читал что если передать большие данные методом POST, то будет сбой если не запретить принимать данные в больших количествах например:
Код

$CGI::POST_MAX=1024*100;
запрещает принимать больше ста кило,
А ещё читал где-то как осуществляют атаки например то-ли на форумы, то-ли гостевые книги,
просто перенаправляют вызов чьей-то программы на свою например:
Код

<img source='http://zloi_dyadya/cgi-bin/spy.pl'>
, и если не отфильтровать такие теги то вызовется вышеуказанный скрипт.
Вот я и подумал, а если вставить в форму такой вызов, сработает? smile Спасибо.
  Вверх
korob2001
Дата 30.3.2005, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

Читал что если передать большие данные методом POST, то будет сбой если не запретить принимать данные в больших количествах например:

Всё верно, это особенно полезная переменная при загрузке файлов на сервер, да и вообще для контроля за кол-вом получаемой информации, но делать проверку регулярками нужно в любом случае.


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


Unregistered











Да, только вот вопрос до сей поры мучает, отослал допустим сервер форму юзеру а он сохранил ее на винт, да подправил кое-что например указал где находится какой-либо ресурс
Код

<img source='http://zloi_dyadya/cgi-bin/spy.pl'>

и вот, теоритически, что может сделать энтот скрипт зловредного когда загрузится?
  Вверх
korob2001
Дата 24.4.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А куда он загрузится??? Юзер сохранил твою форму у себя на винте, изменил исходник HTML, что произойдёт с юзером, это должно волновать, только его самого, не тебя, а уж тем более не сервер.

Или я не понял вопроса, или ты не до конца пояснил его???


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


Unregistered











Да, наверно я стакан проглотил лишний, и мысль теряется, smile у меня какая-то маниакальная идея, а вдруг энтот подлец начнёт каким-то образом фулиганить, например вышеуказанный скрипт, может-ли он при передаче с формой работать в процессоре другой машины, как процесс, открывать файлы, читать/записывать в/из них? Или например принимать ВСЕ параметры переданные пользователем(если не указать какие-точно параметры скрипт ведь все примет).
  Вверх
korob2001
Дата 24.4.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Работать он будет на этой машине: http://zloi_dyadya/cgi-bin/spy.pl, но только в том случае если по этому адресу есть такой скрипт, если у него установленны права исполняемого файла ну и так далее. smile

Это сообщение отредактировал(а) korob2001 - 26.4.2005, 19:22


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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