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