lynx
Цитата: Вот так финальная версия в текущем дистрибутиве: |
я не спрашивал какая она ...
я предлагал: по-моему, однократный поиск/замена по немного более сложному шаблону эффективнее нескольких поисков/замен по немного более простым шаблонам...
Или вообще можно просто проверять наличие http или ftp в начале ссылки, а если нету их — то искать двоеточие: в локальных ссылках, напр. [img]mailpng.cgi?user=lynx[/img] двоеточия быть не может. В итоге: всё, что не начинается с ftp или http и содержит двоеточие отсеиваем...
Что скажешь?
lynx
Цитата:
А почему фикс на AIM не упомянула?
Добавлено
ага...
Цитата: А разве есть эта подпрограмма в дистрибутиве, что в архиве? |
В том, который у меня, к примеру, — есть.
Полная версия, стало быть:
Фиксятся две XSS-дырки (.http://www.securitylab.ru/46410.html):
Вариант 1:
Цитата: В misc.cgi после Код: elsif ($action eq "icq") { | ставим: Код: после Код: elsif ($action eq "aim") { | ставим: Код: $aimname=&cleaninput($aimname); | |
Вариант 2:
Цитата: находим в misc.cgi эту строчку: Цитата: elsif ($action eq "icq") { | добавляем после неё Цитата: if($UIN!~m!^\d+$!){ print header (); &error('&Неправильный UIN ICQ'); } else{ | + ставим закрыівающую фигурную скобку чуть ниже тут: Цитата: Далее по AIM то же самое: находим Цитата: elsif ($action eq "aim") { | добавляем после него Цитата: if($aimname!~m!^[\-A-Z a-z\d_]+$!){ print header (); &error('&Неправильное имя AIM'); } else{ | и ниже закрываем скобку тут: Цитата: |
Первый вариант проводит стандартную замену "опасных" символов, второй — проверяет валидность номера ICQ и имени пользователя AIM'а.
+ сейчас при регистрации в поля ICQ и AOL можно вписать что угодно. Если нужна проверка их валидности, можно сделать следующее:
Цитата: в register.cgi: находим: Цитата: if($emailaddress !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) { print header('text/html; charset=windows-1251'); &error("$ibtxt{'1858'}&$ibtxt{'0906'}"); } | ниже добавляем: Цитата: if($aolname!~m!^[\-A-Z a-z\d_]+$!){ print header('text/html; charset=windows-1251'); &error("&Неверное имя пользователя AIM!"); } if($icqnumber!~m!^\d+$!){ print header('text/html; charset=windows-1251'); &error("&Неверный ICQ UIN!"); } | |