ББ код для вставки изображения в блогах

1. SkoRoST (19.04.2012 / 17:14)
Здравствуйте)))) подскажите пожалуйста как добавить ББ код для вставки изображения в блогах ротора версии 3.0 ?
ну когда я пишу статью , что б мог сразу изображения вставлять , ну примерно такой код [img=http://адрес картинки][/img]

2. SkoRoST (20.04.2012 / 20:13)
up ))))))))))))))))

3. Удаленный (20.04.2012 / 20:17)
Вроде для блогов нужно дописывать код для вставки изображений

4. SkoRoST (21.04.2012 / 10:59)
Miracle (20 Апреля 2012 / 20:17)
Вроде для блогов нужно дописывать код для вставки изображений

ну я о том же.. может кто то написал? или продает кто нить?

5. YeachAgBitch (22.04.2012 / 10:04)
function img($img='') {
$img = preg_replace('#\[img\](.+?)\[/img\]#si', '<img src="\1" alt="img" />', $img);
return $img;
}
image

Добавлено через 01:56 сек.
потом обрабатываешь переменную отвечающую за пост в блоге. вида $msg = img($msg);

6. SkoRoST (23.04.2012 / 21:47)
YeachAgBitch (22 Апреля 2012 / 10:04)
function img($img='') {
$img = preg_replace('#\[img\](.+?)\[/img\]#si', '<img src="\1" alt="img" />', $img);
return $img;
}
image

Добавлено через 01:56 сек.
потом обрабатываешь переменную отвечающую за пост в блоге. вида $msg = img($msg);


спасибо , попробую щас

7. SkoRoST (23.04.2012 / 22:30)
короче этот код
function img($img='') {
$img = preg_replace('#\[img\](.+?)\[/img\]#si', '<img src="\1" alt="img" />', $img);
return $img;
}
я вставил в файл инклудес/фиктионс.пхп

потом в файле blog/blog.php нашел строку

$text = no_br($text);
$text = antimat($text);
$text = smiles($text);

и добавил туда

$text = img($text);

получилось

$text = no_br($text);
$text = antimat($text);
$text = smiles($text);
$text = img($text);

я все правильно сделал? если да , то почему бб код
image
не работает?

8. Волан-де-Морт (27.04.2012 / 04:02)
В место [img\](.+?)\[/img\] это [img\](.*?)\[/img\]

9. Сергей (08.06.2012 / 01:45)
поднимаю тему. меня это тоже интересует. ккак сделать по нормальному?

10. Андрей (08.06.2012 / 02:26)
Прописал, но картинка как будто не грузит img только остается.. То есть картинки не существует..

11. Андрей (08.06.2012 / 02:47)
<?php
$msg = preg_replace('#\[img\](.*?)\[/img\]#si', '<img src=\'\1\' alt=\'img\' />', $msg);
?>
По идее должно быть так, но и это не работает, где-то еще дописывать нужно..

12. ramzes (08.06.2012 / 03:45)
Marsellkin (8 Июня 2012 / 02:47)
<?php
$msg = preg_replace('#\[img\](.*?)\[/img\]#si', '<img src=\'\1\' alt=\'img\' />', $msg);
?>
По идее должно быть так, но и это не работает, где-то еще дописывать нужно..
И сразу на нлавной сайта пиши, "мы раздаем свои куки, не проходите мимо!"

13. Волан-де-Морт (08.06.2012 / 04:44)
12. ramzes, на халяву D

14. Дмитрий (08.06.2012 / 05:30)
12. ramzes, не только куки. Через такую конструкцию можно вставить любой JS код, который выполнить все, что угодно (в рамках того, что умеет сам JS).

15. Андрей (08.06.2012 / 11:49)
Не понял ребят.. Объясните..

16. iNeeXT (08.06.2012 / 12:12)
15. Marsellkin, можно сниффер вставить

17. ramzes (08.06.2012 / 12:37)
dima.london (8 Июня 2012 / 05:30)
12. ramzes, не только куки. Через такую конструкцию можно вставить любой JS код, который выполнить все, что угодно (в рамках того, что умеет сам JS).
можно и crf проводить

Добавлено через 00:30 сек.
Marsellkin (8 Июня 2012 / 11:49)
Не понял ребят.. Объясните..
уязвимость большая

18. Сергей (08.06.2012 / 12:50)
вы лучше подсккажите, как по нормальному сдлеать

19. Андрей (08.06.2012 / 12:50)
17. ramzes, спасибо, но я же не в пустую страницу вставлял это значение, а в файле functions, где прописана функция вставки BB-кода.. Или это значения не имеет?

20. ramzes (08.06.2012 / 12:53)
Marsellkin (8 Июня 2012 / 12:50)
17. ramzes, спасибо, но я же не в пустую страницу вставлял это значение, а в файле functions, где прописана функция вставки BB-кода.. Или это значения не имеет?
не важно. вместо картинки тебе могут вставить кучу нехорошего кода и он исполнится

21. Андрей (08.06.2012 / 12:54)
20. ramzes, Спасибо!!

22. Дмитрий (08.06.2012 / 12:57)
19. Marsellkin, такой код пропустит даже образ картинки. То есть собственно даже картинки самой не будет. Только имя, а содержимое образа - JS.

23. Андрей (08.06.2012 / 13:07)
22. dima.london, я не понимаю в этом, спасибо что предупредили.. Просто когда тему поднимали, все молчали по поводу уязвимости..

24. ramzes (08.06.2012 / 13:26)
23. Marsellkin, тут таких тем уже штук 10 было.
необходимо перед вставкой удостовериться что файл действительно файл и действительно картинка
плюс сделать ресайз, а то кто ни будь запилит в пост штук 100 картинок по 2гига каждая, и привет))

25. Олег (08.06.2012 / 13:50)
Через BB код изображение тогда тоже можно взломать?

26. Сергей (08.06.2012 / 14:22)
Oleg (8 Июня 2012 / 13:50)
Через BB код изображение тогда тоже можно взломать?


27. ramzes (08.06.2012 / 14:35)
Oleg (8 Июня 2012 / 13:50)
Через BB код изображение тогда тоже можно взломать?
ты мне функцию покажи, я не буду искать ее в 40кб постороннего кода

28. Андрей (08.06.2012 / 14:40)
27. ramzes, Вспомогательный код
<?
function img_replaces($m) {  
$m = str_replace("http://","",$m); 
$file = 'http://' . $m['1'] . ''; 
$size = getimagesize ("$file"); 

$ext = strtolower(substr($file, 1 + strrpos($file, "."))); 
$ext2 = array("gif", "jpg", "png", "jpeg"); 
if (in_array($ext, $ext2)) { 

if ($size['0'] > '100' || $size['1'] > '100'){ 
echo '<br><img src="http://' . $m['1'] . '" width="100" height="100" alt="' . $m['2'] . '"><br>';  
}else{ 
echo '<br><img src="http://' . $m['1'] . '" alt="' . $m['2'] . '"><br>';  
} 
echo '<a href="http://' . $m['1'] . '">Скачать</a> ['.$size['0'].'x'.$size['1'].']<br>'; 
}else{ 
echo '' . $file . ''; 
} 
}  


function url_replace($m) {  
if( !isset($m[3]) ) {  
return '<a href="' . $m[1] . '">' . $m[2] . '</a>';  
} else {  
return '<a href="' . $m[3] . '">' . $m[3] . '</a>';          
}} 
?>
Функция вставки кода
<?
$message = preg_replace_callback('~\\[img=(http://.+?)\\](.+?)\\[/img\\]~', 'img_replaces', $message); 
?>


29. Изнаур (08.06.2012 / 14:41)
ramzes (8 Июня 2012 / 14:35)
ты мне функцию покажи, я не буду искать ее в 40кб постороннего кода
<?
function img_replaces($m) { 
$m = str_replace("http://","",$m);
$file = 'http://' . $m['1'] . '';
$size = getimagesize ("$file");

$ext = strtolower(substr($file, 1 + strrpos($file, ".")));
$ext2 = array("gif", "jpg", "png", "jpeg");
if (in_array($ext, $ext2)) {

if ($size['0'] > '100' || $size['1'] > '100'){
echo '<br><img src="http://' . $m['1'] . '" width="100" height="100" alt="' . $m['2'] . '"><br>'; 
}else{
echo '<br><img src="http://' . $m['1'] . '" alt="' . $m['2'] . '"><br>'; 
}
echo '<a href="http://' . $m['1'] . '">Скачать</a> ['.$size['0'].'x'.$size['1'].']<br>';
}else{
echo '' . $file . '';
}
} 


function url_replace($m) { 
if( !isset($m[3]) ) { 
return '<a href="' . $m[1] . '">' . $m[2] . '</a>'; 
} else { 
return '<a href="' . $m[3] . '">' . $m[3] . '</a>';         
}} 
?>
вот вроде

30. Дмитрий (08.06.2012 / 14:57)
Oleg (8 Июня 2012 / 12:50)
Через BB код изображение тогда тоже можно взломать?
Легко.
<?
function img_replaces($m) { 
$m = str_replace("http://","",$m);
$file = 'http://' . $m['1'] . '';
$size = getimagesize ("$file");

$ext = strtolower(substr($file, 1 + strrpos($file, ".")));
$ext2 = array("gif", "jpg", "png", "jpeg");
if (in_array($ext, $ext2)) {

if ($size['0'] > '100' || $size['1'] > '100'){
echo '<br><img src="http://' . $m['1'] . '" width="100" height="100" alt="' . $m['2'] . '"><br>'; 
}else{
echo '<br><img src="http://' . $m['1'] . '" alt="' . $m['2'] . '"><br>'; 
}
echo '<a href="http://' . $m['1'] . '">Скачать</a> ['.$size['0'].'x'.$size['1'].']<br>';
}else{
echo '' . $file . '';
}
}
1. Как мы видим, размер картинки проверяется, но не с целью обезопасить, а с целью красиво вывести на экран.
2. Вес картинки не проверяется совсем.
3. Наличие файла не проверяется совсем.
4. Проверяется только расширение, но его легко подделать.
5. Да и вообще тут подход крайне неверный. Если картинок на странице много, это нагрузит сервер. Грубо говоря, ему надо будет открыть и произвести все вышеперечисленные мной действия. А если страницу смотрит много людей - Error 504 обеспечено.

Резюме: Криво, косо, дыряво. Написано 90-летним индусом.

31. ramzes (08.06.2012 / 15:13)
dima.london (8 Июня 2012 / 14:57)
4. Проверяется только расширение, но его легко подделать.
каким образом? если это не будет картинкой то getimagesize не вернет его миме тип

32. Дмитрий (08.06.2012 / 15:32)
31. ramzes, а если это образ?
Вот сейчас я создам картинку весом 10 байт и размером 1px * 1px с именем ramzes.jpeg и злым содержимым. Как этот код выше ее отфильтрует?

Я чо, я ничо. Можно вообще картинку без размера отдать. Тупо мод-реврайтом сделать красивый адресок с переадресатей на PHP скрипт или JS. В нем подделывается и MIME, и все что угодно... А тот уже выполнится при прикреплении в сообщение подобным кодом.

33. ramzes (08.06.2012 / 15:34)
32. dima.london, битность, размеры и прочее ты тоже подделаешь?smile покажи

34. Сергей (08.06.2012 / 17:36)
вот вы бы лучше написали нормальнл..помогли народу

35. ramzes (08.06.2012 / 18:20)
FleQ (8 Июня 2012 / 17:36)
вот вы бы лучше написали нормальнл..помогли народу
вот возьми и напиши

36. Сергей (09.06.2012 / 00:25)
я не шарю в PHP с нуля

37. QuyCuong (26.07.2012 / 05:37)
function url_replace($m) {

  global $config;



  if (!isset($m[3])) {

    $target = (strpos($m[1], $config['home']) === false) ? ' target="_blank"' : '';

    return '' . $m[2] . '';

  } else {
      if ((!preg_match('/\.gif$/i',$m[3])) && (!preg_match('/\.png$/i',$m[3])) && (!preg_match('/\.jpg$/i',$m[3]))){
    $target = (strpos($m[3], $config['home']) === false) ? ' target="_blank"' : '';

    return '' . $m[3] . '';

	} 
	else return $m[3];
  } 

}

  $msg = preg_replace('#\[img\](.*?)\[/img\]#si', '<img src=\1 height=80 weight=100>
<a href=\1>загрузка</a>', $msg);


38. Вова (12.10.2012 / 17:39)
переделал з Johncms
http://upwap.ru/2867500

URL: https://visavi.net/topics/31398