понимание тэгов в пхп

Discussion in 'PHP' started by zoron, 1 Feb 2008.

  1. zoron

    zoron New Member

    Joined:
    17 Nov 2007
    Messages:
    26
    Likes Received:
    0
    Reputations:
    0
    вопщем вопросец такой например забиваю я новость в бд указываю там например [​IMG] как сделать так чтобы при выводе этого сообщения появилась картинка?
     
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Перед выводом проводить ответ бд через регулярки...
    Что-то типа:
    PHP:
    $img preg_replace("#^(img|src)?[a-z0-9\.-]+\.[jpg|jpeg|gif]{1,3}$#""<img src=\"\\1\" border='0'/>"
    Только вот неуверен что моя регулярка верная =)
     
  3. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    PHP:
    preg_match("#\[img\](.*)\[/img\]#"$stroka_iz_db$arr);
    echo 
    "<img src=\"$arr[1]\">";
     
    #3 Piflit, 1 Feb 2008
    Last edited: 1 Feb 2008
  4. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    PHP:
    $text=preg_replace('|\[img\](.*)\[/img\]|is','<img src="\1">',$db);
    PS этот код небезопасен
     
  5. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    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;
    ?>
    Думаю это будет безопасно.
     
    #5 NOmeR1, 1 Feb 2008
    Last edited: 1 Feb 2008
    2 people like this.
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    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;
    ?>
     
    3 people like this.
  7. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    по идеи так надежно
    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;
    ?> 
     
    1 person likes this.
  8. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    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;
    ?>
    Я вот думаю...мне написать код или вы еще помучаетесь)))
     
  9. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    в данном коде что ты привел, XSS срабатывает не из за тэга , а тут идет обсуждение тэгов img . Обрабатываю строку перед передачей ее регулярке (или в самой регулярке, но это есле она одна) функцией htmlspecialchars() и все будет ок

    в данном примере и банальный <script>alert()</script> сработает, и без всяких OnMouseOver итд..
     
    #9 nc.STRIEM, 1 Feb 2008
    Last edited: 1 Feb 2008
    1 person likes this.
  10. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Я привел этот код потому как ты написал что это надежно
     
  11. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    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 и он надёжен, т.к. если в нём будут учавствовать неверные символы, тег не сработает.