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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при поике соответствий /$var/, $var eq )/'"><script>alert("x")</ 
:(
    Опции темы
stan777
  Дата 7.2.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

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



Вылетае ошибка Unmatched ) in regex; marked by <-- HERE in m/) <-- HERE /'"><script>alert("test")</script>'/ at ./test1 line 37.

когда  $var = )/'"><script>alert("test")</script>' 

Почему это происходит может кто знает ?

 
Код

foreach $line(@page){ 
                 if($line=~ /$var/){
                      print "XSS".$line."\n";
                 }else{print "ok.\n";}    
        }


Это сообщение отредактировал(а) stan777 - 7.2.2007, 15:50
PM MAIL   Вверх
amg
Дата 7.2.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Понятно, почему. У закрывающей скобки нет открывающей.
Попробуй в $var заэкранировать все подозрительные символы, вручную или с помощью кода
Код

$var =~ s/(\W)/\\$1/g;
Может, станет лучше.

Это сообщение отредактировал(а) amg - 7.2.2007, 16:06
PM MAIL   Вверх
nitr
Дата 7.2.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



исправь ошибку здесь, а то невидно вообще какой регесп
$var = )/'"><script>alert("test")</script>' 
это изначально ошибка

и ответ amg должен сработать...


--------------------
PM   Вверх
stan777
Дата 7.2.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

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



тоже глюки получаются, корче как мне сказать что все что в $var это текс, при проверке типа 
Код

if($line=~ /$var/){
                      print "XSS".$line."\n";
                 }else{print "ok.\n";}
не пойму.

Добавлено @ 16:59 
Цитата(nitr @ 7.2.2007,  16:40)
исправь ошибку здесь, а то невидно вообще какой регесп
$var = )/'"><script>alert("test")</script>' 
это изначально ошибка

и ответ amg должен сработать...

Мне было не видно какой регех, ну короче мне подсказали поставить \Q и все заработало smile ! 
Код

if($line=~ /\Q$var/){
                      print "XSS".$line."\n";
                 }else{print "ok.\n";}

Вроде все работает, хотя как работает я не знаю, ну хотя бы явных ошибок нет.  
Возможно работает, но неправльно. 

Это сообщение отредактировал(а) stan777 - 7.2.2007, 17:01
PM MAIL   Вверх
amg
Дата 8.2.2007, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(stan777 @  7.2.2007,  16:46 Найти цитируемый пост)
тоже глюки получаются

Цитата(stan777 @  7.2.2007,  16:46 Найти цитируемый пост)
поставить \Q и все заработало

Вот это любопытно! Я просто не смог придумать ситуацию, в которой
$var =~ s/(\W)/\\$1/g; $line =~ /$var/;
и
$line =~ /\Q$var/;
вели бы себя по разному.

stan777, если не сложно, приведи примеры $line и $var, для которых это наблюдается (просто интересно).
PM MAIL   Вверх
stan777
Дата 8.2.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

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



$var берутся у меня из файла Вот таким образом 
Код

open VARS, "<var.txt" or die "$!";
chomp(my @var = <VARS>);
close VARS;

 и равны они вот чему:
------- start file---------------
00/'"><script>alert("test")</script>'
0"><script>alert("test")</script>'
)'"><script>alert("test")</script>'
)'"><script>alert("test")</script>
')"><script>alert("test")</script>'
[script]alert("test")[/script]
(script)alert("test")(/script)
<script>alert("test")</script>
---------- EOF ------------------
и когда $var становится )/'"><script>alert("test")</script>' соответствено, вылетала ошибка попробуй ее со совоим регехпом, она перестала вылетать только с \Q, почему не знаю, но работает smile.    

Это сообщение отредактировал(а) stan777 - 8.2.2007, 10:07
PM MAIL   Вверх
amg
Дата 8.2.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(stan777 @  8.2.2007,  10:04 Найти цитируемый пост)
$var берутся у меня из файла

stan777, спасибо, но еще бы примеры $line, на которых возникают ошибки.
PM MAIL   Вверх
tishaishii
Дата 22.2.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



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


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

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


 




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


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

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