вопщем вопросец такой например забиваю я новость в бд указываю там например как сделать так чтобы при выводе этого сообщения появилась картинка?
Перед выводом проводить ответ бд через регулярки... Что-то типа: PHP: $img = preg_replace("#^(img|src)?[a-z0-9\.-]+\.[jpg|jpeg|gif]{1,3}$#", "<img src=\"\\1\" border='0'/>" Только вот неуверен что моя регулярка верная =)
PHP: <?php $text = '..........[img]http://forum.antichat.ru/antichat/pic/logo.gif[/img]..............'; $text = preg_replace('~\[img\](http(s)?://[^\x27\x22\x3E\x3C]+)\[/img\]~isU', '<img src="\\1" />', htmlspecialchars($text)); echo $text; ?> Думаю это будет безопасно.
Nomer1 , гыгы) PHP: <?php $text = '..........[img]http://"\><a href="#" onmouseover="alert(\'xss\')"><b>x4x0r</b></a>[/img]..............'; $text = preg_replace('~\[img\](http(s)?://[^\x27\x22\x3E\x3C]+)\[/img\]~isU', '<img src="\\1" />', $text); echo $text; ?>
по идеи так надежно PHP: <? $text='[img]http://abcde"fghig.fih/sd[/img]'; $text = preg_replace('/\[img\]http:\/\/(.*)\[\/img\]/e', "'<img src=\"http://'.str_replace('\"', '%22', '$1').'\">';", $text); echo $text; ?>
nc.STRIEM, PHP: <? $text='[img]"\'/><a href=\'xaxa\' onmouseover=\'alert(/xss/)\'>XSS</a>[/img]'; $text = preg_replace('/\[img\]http:\/\/(.*)\[\/img\]/e', "'<img src=\"http://'.str_replace('\"', '%22', '$1').'\">';", $text); echo $text; ?> Я вот думаю...мне написать код или вы еще помучаетесь)))
в данном коде что ты привел, XSS срабатывает не из за тэга , а тут идет обсуждение тэгов img . Обрабатываю строку перед передачей ее регулярке (или в самой регулярке, но это есле она одна) функцией htmlspecialchars() и все будет ок в данном примере и банальный <script>alert()</script> сработает, и без всяких OnMouseOver итд..
Isis, это надёжно. И мой код надёжен. Можно и так сделать PHP: <?php $text = '<script>alert()</script>'; $text = preg_replace('~\[img\](http(s)?://[^\x27\x22\x3E\x3C]+)\[/img\]~isU', '<img src="\\1" />', $text); echo $text; ?> Он не просил защищать от XSS, я привёл метод, который просто добавляет тег IMG и он надёжен, т.к. если в нём будут учавствовать неверные символы, тег не сработает.