Временно решение за проблемите с img tags |
||
Последните проблеми със сигурността на phpBB форумите са по-скоро вероятни, отколкото действителни. В най-общи линии проблемът се състои в това, че phpBB позволява визуализация на генерирана от PHP скрипт картинка. Дейталът е в това, че може да се използва злонамерен код, вместо картинка. Ето и моето решение на проблема. При него [img] няма да визуализират картинка, a ще обрнат адреса на картинката в URL. Така дори да има злонамерен код, той ще се изпълни извън форума ;).
Отворете: bbcode.tpl
Намерете:
<!-- BEGIN img --><img src="{URL}" border="0" /><!-- END img -->
Заместете кода с:
<!-- BEGIN img --><a href="{URL}" target="_blank" class="postlink">{URL}</a><!-- END img -->
Сменете стария код с новия.
Има вариант, при който забранявате всички BBcode-ве, но е доста неудобно и няма защо другите функции да страдат заради една потенциална (вероятна опасност).
Третият вариант е да забраните използването на img напълно. Това може да стане по този начин:
Отворете: includes/bbcode.php
Намерете: $text = str_replace("[i:$uid]", $bbcode_tpl['i_open'], $text);
$text = str_replace("[/i:$uid]", $bbcode_tpl['i_close'], $text); Под този код на нов ред добавете:
//Fix - disable [img] code!
$text = str_replace("[img:$uid]", "[img]", $text); $text = str_replace("[/img:$uid]","[/img]", $text); Сменете стария код с новия. Източникът за този хак е mynuke.ru
Най-новото решение на проблема идва от http://www.nukefixes.com/ и то е:
Отворете: includes/bbcode.php
Намерете:
function bbencode_first_pass($text, $uid)
{ Под този код на нов ред добавете:
$img_start = 0;
while( preg_match('/\[img\](.*)\[\/img\]/', substr($text,$img_start), $imgurl) ) { $img_url = $imgurl[1]; $img_start = strpos($text, $imgurl[0], $img_start) + strlen($imgurl[0]); if(!@getimagesize($img_url)) { message_die(GENERAL_ERROR, "The img ($img_url) is not valid"); } if($img_start >= strlen($text)) { break; } } Това не е официална поправка, но засега поне работи при мен, което не означава, че поемам отговорността, ако нещо се случи с вашите форуми ;-). С две думи всички промени се правят на собствен риск.
А, и един съвет. Винаги преди да променяте нещо по файловете, напраете си резервни копия от тях и чак тогава действайте. Същото се отнася и ако променяте нещо по базата данни.
|
||