|
|
|
| Есть такие хитрые коды, как [url= ] [/url] или [color= ] [/color], через которые вероятнее всего внедрить XSS, так вот как их можно отпарсить от этого? Если кто знает, как это делается без объектного метода или шаблонизаторов, поведайте пожалуиста | |
|
|
|
|
|
|
|
для: Stanisov
(04.06.2009 в 11:06)
| | Используйте отточенные парсеры ББ-кодов | |
|
|
|
|
|
|
|
для: mihdan
(05.06.2009 в 23:08)
| | а чего там оттачивать? вот, попробуйте сделать XSS применительно данного "парсера":
<?php
$text = 'jskfhjkashjkfjk Softtime ';
preg_match_all('/\[url=(.+?)\](.+?)\[\/url\]/', $text, $url2);
for($i = 0; $i < count($url2[1]); $i++){
$url2[1][$i] = preg_replace('/^([^"]*)(.*)$/', '\1', $url2[1][$i]);
$text = str_replace($url2[0][$i], '<a href="'.$url2[1][$i].'" >'.$url2[2][$i].'</a>', $text);
}
|
| |
|
|
|
|
автор: 345345 (06.06.2009 в 16:30) |
|
|
для: nikita2206
(05.06.2009 в 23:43)
| | Тут явно пассивный XSS | |
|
|
|
|
|
|
|
для: 345345
(06.06.2009 в 16:30)
| | пассивный xss должен обрабатываться, уж точно, не в процессе парса ББ-кода…
пс хотя в коде можно коечто изменить, в preg_replace, в [^"] вставить еще < и > или вообще такой выриант:
<?php
$text = 'самый простой "взлом" с помощью XSS: [url=http://softtime.ru" onclick="alert('!!!!!!!!!!!!!')][/url]';
preg_match_all('/\[url=(?<!"><)(.+?)\](.+?)\[\/url\]/', $text, $url2);
for($i = 0; $i < count($url2[1]); $i++) $text = str_replace($url2[0][$i], '<a href="'.$url2[1][$i].'" >'.$url2[2][$i].'</a>', $text);
|
правда я непробовал его на работоспособность, но суть в том чтоб отфильттровать кавычки, знаки больше меньше с помощью какого то там негативного отрицания чтоли? | |
|
|
|
|
автор: 23423432 (07.06.2009 в 11:54) |
|
|
для: nikita2206
(07.06.2009 в 01:58)
| | Попробуй просто javascript:alert('haha') в качестве адреса дать.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Stanisov
(04.06.2009 в 11:06)
| | А как через них XSS возможна? | |
|
|
|
|
|
|
|
для: Commander
(06.06.2009 в 04:49)
| | уже нешел защиту, вот
$string = preg_replace('#(script|about|applet|activex|chrome):#isU', "\\1:",$string);
|
XSS вожможна, просто вставляеш тег между ссылками и все | |
|
|
|
|
|
|
|
для: Stanisov
(06.06.2009 в 14:56)
| | >XSS вожможна, просто вставляеш тег между ссылками и все
Какой тег? Если html-тег, то достаточно пропустить текст через htmlspecialchars(), чтобы он стал безобиден. | |
|
|
|
|
|
|
|
для: Commander
(06.06.2009 в 15:28)
| | Да, у меня все htmlspecialchars'ом обрабатывается! Но если сделать [url]javascript:alert(document.cookie)[/url] то увидишь свои куки и сессию! + еще и на сниф кинуть, тогда они у тебя будут украдены...Htmlspecialchars сдесь не поможет!...Кстати сдесь на форуме защита от этого стоит | |
|
|
|
|
|
|
|
для: Stanisov
(06.06.2009 в 17:54)
| | потому что здесь не дадут совать в url= что-либо начинающееся не с http:// | |
|
|
|
|
|
|
|
для: Trianon
(06.06.2009 в 18:00)
| | ....а ссылки бывают начинаются и с ftp://site.com, https://site.com, а также относительные [url]/thread666.html[/url], | |
|
|
|
|
|
|
|
для: Stanisov
(06.06.2009 в 18:32)
| | бывают. Но здесь они не проходят как раз в угоду безопасности.
Между прочим /thread666.html - ссылка абсолютная. Хотя и локальная. | |
|
|
|