Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   понимание тэгов в пхп (https://forum.antichat.xyz/showthread.php?t=60639)

zoron 01.02.2008 15:45

понимание тэгов в пхп
 
вопщем вопросец такой например забиваю я новость в бд указываю там например [img]сылка на картинку[/img] как сделать так чтобы при выводе этого сообщения появилась картинка?

Isis 01.02.2008 15:52

Перед выводом проводить ответ бд через регулярки...
Что-то типа:
PHP код:

$img preg_replace("#^(img|src)?[a-z0-9\.-]+\.[jpg|jpeg|gif]{1,3}$#""<img src=\"\\1\" border='0'/>" 

Только вот неуверен что моя регулярка верная =)

Piflit 01.02.2008 16:04

PHP код:

preg_match("#\[img\](.*)\[/img\]#"$stroka_iz_db$arr);
echo 
"<img src=\"$arr[1]\">"


Macro 01.02.2008 16:06

PHP код:

$text=preg_replace('|\[img\](.*)\[/img\]|is','<img src="\1">',$db); 

PS этот код небезопасен

NOmeR1 01.02.2008 16:16

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;
?>

Думаю это будет безопасно.

Isis 01.02.2008 16:32

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;
?>


nc.STRIEM 01.02.2008 17:32

по идеи так надежно
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;
?>


Isis 01.02.2008 17:39

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;
?>

Я вот думаю...мне написать код или вы еще помучаетесь)))

nc.STRIEM 01.02.2008 17:43

в данном коде что ты привел, XSS срабатывает не из за тэга [img], а тут идет обсуждение тэгов img . Обрабатываю строку перед передачей ее регулярке (или в самой регулярке, но это есле она одна) функцией htmlspecialchars() и все будет ок

в данном примере и банальный <script>alert()</script> сработает, и без всяких OnMouseOver итд..

Isis 01.02.2008 17:50

Я привел этот код потому как ты написал что это надежно


Время: 10:42