아이콘 업로드 하는 로직이요...... 정보
아이콘 업로드 하는 로직이요......
본문
불당님팩쓰고있는데
아래코드가 원 코드인지 수정한건지는 모릅니다.......
gif 또는 jpg 다 받고
또 용량보다 작은지 검사한 후에
디렉토리만들고 파일올립니다.
근데 이해가 안되는것이,
그 후에 악성코드방지랍시고
다시 gif아니면 다 지우거나.....................
용량보다 크면 다 지웁니다......................
첨부터 안받으면 되지 굳이 왜그럴까요???
========================================
//if (preg_match("/(\.gif)$/i", $_FILES[mb_icon][name]))
if (preg_match("/\.(jp[e]?g|gif|png|bmp)$/i", $_FILES[mb_icon][name]))
{
// 아이콘 용량이 설정값보다 이하만 업로드 가능
if ($_FILES[mb_icon][size] <= $config[cf_member_icon_size])
{
@mkdir($mb_dir, 0707);
@chmod($mb_dir, 0707);
$dest_path = "$mb_dir/$mb_id.gif";
move_uploaded_file($_FILES[mb_icon][tmp_name], $dest_path);
chmod($dest_path, 0606);
if (file_exists($dest_path))
{
//=================================================================\
// 090714
// gif 파일에 악성코드를 심어 업로드 하는 경우를 방지
// 에러메세지는 출력하지 않는다.
//-----------------------------------------------------------------
$size = getimagesize($dest_path);
if ($size[2] != 1) // gif 파일이 아니면 올라간 이미지를 삭제한다.
@unlink($dest_path);
else
// 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
if ($size[0] > $config[cf_member_icon_width] || $size[1] > $config[cf_member_icon_height])
@unlink($dest_path);
//=================================================================\
}
} else
{
$msg .= "{$_FILES[mb_icon][name]} 파일의 용량이 " . number_format($config[cf_member_icon_size]/1000) . "k 바이트보다 크므로 업로드 할 수 없습니다.\\n";
}
}
아래코드가 원 코드인지 수정한건지는 모릅니다.......
gif 또는 jpg 다 받고
또 용량보다 작은지 검사한 후에
디렉토리만들고 파일올립니다.
근데 이해가 안되는것이,
그 후에 악성코드방지랍시고
다시 gif아니면 다 지우거나.....................
용량보다 크면 다 지웁니다......................
첨부터 안받으면 되지 굳이 왜그럴까요???
========================================
//if (preg_match("/(\.gif)$/i", $_FILES[mb_icon][name]))
if (preg_match("/\.(jp[e]?g|gif|png|bmp)$/i", $_FILES[mb_icon][name]))
{
// 아이콘 용량이 설정값보다 이하만 업로드 가능
if ($_FILES[mb_icon][size] <= $config[cf_member_icon_size])
{
@mkdir($mb_dir, 0707);
@chmod($mb_dir, 0707);
$dest_path = "$mb_dir/$mb_id.gif";
move_uploaded_file($_FILES[mb_icon][tmp_name], $dest_path);
chmod($dest_path, 0606);
if (file_exists($dest_path))
{
//=================================================================\
// 090714
// gif 파일에 악성코드를 심어 업로드 하는 경우를 방지
// 에러메세지는 출력하지 않는다.
//-----------------------------------------------------------------
$size = getimagesize($dest_path);
if ($size[2] != 1) // gif 파일이 아니면 올라간 이미지를 삭제한다.
@unlink($dest_path);
else
// 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
if ($size[0] > $config[cf_member_icon_width] || $size[1] > $config[cf_member_icon_height])
@unlink($dest_path);
//=================================================================\
}
} else
{
$msg .= "{$_FILES[mb_icon][name]} 파일의 용량이 " . number_format($config[cf_member_icon_size]/1000) . "k 바이트보다 크므로 업로드 할 수 없습니다.\\n";
}
}
댓글 전체

파일을 받아 봐야 gif인지 png인지 악성코드인지 알 수 있죠.

아.. 확장자를 .gif로해도 getimagesize 에서 gif가 아니면 걸린다 말이네요...
모든 파일을 다 받고싶으면
if ($size[2] != 1) 이부분을
if ($size[2] != 1 && $size[2] !=21 && $size[2] != 3 && $size[2] != 4 )
이렇게 바꾸면 될까요??
모든 파일을 다 받고싶으면
if ($size[2] != 1) 이부분을
if ($size[2] != 1 && $size[2] !=21 && $size[2] != 3 && $size[2] != 4 )
이렇게 바꾸면 될까요??
