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

Печать RSS
539


Чатланин
0
20. ramzes, Спасибо!!

Голубые штаны
0
19. Marsellkin, такой код пропустит даже образ картинки. То есть собственно даже картинки самой не будет. Только имя, а содержимое образа - JS.

Чатланин
0
22. dima.london, я не понимаю в этом, спасибо что предупредили.. Просто когда тему поднимали, все молчали по поводу уязвимости..

2000 лет д.н.э.
0
23. Marsellkin, тут таких тем уже штук 10 было.
необходимо перед вставкой удостовериться что файл действительно файл и действительно картинка
плюс сделать ресайз, а то кто ни будь запилит в пост штук 100 картинок по 2гига каждая, и привет))

Пришелец
0
Через BB код изображение тогда тоже можно взломать?
С

Пришелец
0
Oleg (8 Июня 2012 / 13:50)
Через BB код изображение тогда тоже можно взломать?

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

Чатланин
0
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); 
?>
И

Пацак
0
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>';         
}} 
?>
вот вроде

Голубые штаны
0
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-летним индусом.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск