[추가]data 폴더 사용자 지정하도록 수정하기 정보
[추가]data 폴더 사용자 지정하도록 수정하기첨부파일
본문
# 추가 된 사항:
1. image 가리기... 첨부된 파일들은 utf-8용입니다. euc-kr은 텍스트 에디터로 읽은 후 ansi로 전환하면 됩니다.
2. 이미 에디터를 사용하여 그림을 첨부한 글들이 있을 경우를 위해 수정될 부분
----------------------------------------------------------------------------------
보안은 생활화 되어야 하는데 data폴더는 지정이 불가한 폴더로 되어 있네요. 그래서 바꾸어 보았습니다.
1. 먼저 할 일은 /data로 되어 있는 부분을 $g4['data'] 이런 식으로 교환하는 일입니다.
config.php에서 다음을 추가합니다:
$g4['data'] = "data";
$g4['data_path'] = $g4['path'] . "/" . $g4['data'];
파일 열기해서 $g4[path]/data로 되어 있는 것은 모두 $g4[data_path]로 바꾸어 줍니다.
또한 common.php에서 {$g4['path']}/data로 되어 있는 부분도 $g4[data_path]로 바꾸어 줍니다.
그리고 설치시에도 적용하게 하려면 install_db.php를 열어 /data로 되어 있는 부분을 /$g4[data]로 바꾸어 줍니다.
그리고 보안을 위해 data폴더의 이름을 다른 것으로 바꾸기 원하면 config.php의 $g4['data']의 값을 바꾸고 그리고 실제 data폴더의 이름을 바꾼 값과 똑같이 바꾸어주면 됩니다.
수정되는 파일 목록:
config.php
common.php
adm/admin.lib.php
adm/board_copy_update.php
adm/board_delete.inc.php
adm/board_form.php
adm/board_form_update.php
adm/member_form.php
adm/member_form_update.php
adm/session_delete.php
bbs/write_update.php
bbs/board_head.php
bbs/board_tail.php
bbs/delete.php
bbs/delete_all.php
bbs/download.php
bbs/move_udpate.php
bbs/register_form.php
bbs/register_form_udpate.php
bbs/tb.php
cheditor/insert_image.php
cheditor4/insert_image.php
geditor/upload.php
install/install_db.php
lib/common.lib.php
2. 두번째 할 일은 이미지를 가리는 일입니다. 링크 파일의 경우는 자동적으로 가려지나 이미지는 그렇지 못합니다. 그래서 만들어 보았습니다.
먼저 첨부된 image.php 파일을 그누보드의 최상단 폴더에 넣습니다. 모든 이미지는 이 스크립트 파일을 통해 보여지게 됩니다. 그래서 자연스럽게 경로가 감추어 집니다.
나중에 시간나면 그림 뿐 아니라 동영상이나 플래쉬도 확인을 해봐야겠죠.
image.php를 업로드 했으면 이 파일을 이용하도록 소스를 수정해야 합니다. 수정할 파일들 목록은 다음과 같습니다:
cheditor/insert_image.php
cheditor4/insert_image.php
geditor/upload.php
lib/common.lib.php
(1) 먼저 cheditor/insert_image.php는 cheditor4/insert_image.php와 비슷하므로 cheditor4/insert_image.php를 위주로 설명하면 56라인정도에
$filename = SAVE_AS_URL . $attach->file['name']; 가 보입니다. 이 라인을 주석처리한 후에 다음 으로 교체하세요:
$filename = "$g4[url]/image.php?uploader=cheditor4&img=$ym%2F".$attach->file['name'];
cheditor/insert_image.php도 비슷하므로 설명을 생략합니다.
(2) geditor/upload.php는 수정할 부분이 조금 됩니다. 그래서 파일을 링크합니다. 링크된 파일을 참조하세요.
(3) lib/common.lib.php 를 열어 view_file_link함수를 열어
return "<img src='$g4[data_path]/file/$board[bo_table]/".urlencode($file)."' name='target_resize_image[]' onclick='image_window(this);' style='cursor:pointer;' title='$content'>";
를 찾아 주석처리 합니다.
그리고 다음을 대신 넣어줍니다:
return "<img src='$g4[url]/image.php?bo_table=$board[bo_table]&img=".urlencode($file)."' name='target_resize_image[]' onclick='image_window(this);' style='cursor:pointer;' title='$content'>";
이렇게 하면 업로드된 모든 이미지들은 image.php를 거쳐 화면에 뿌려지게 됩니다. 그래서 자연적으로 경로가 감추어 집니다.
================================================================
1. image 가리기... 첨부된 파일들은 utf-8용입니다. euc-kr은 텍스트 에디터로 읽은 후 ansi로 전환하면 됩니다.
2. 이미 에디터를 사용하여 그림을 첨부한 글들이 있을 경우를 위해 수정될 부분
----------------------------------------------------------------------------------
보안은 생활화 되어야 하는데 data폴더는 지정이 불가한 폴더로 되어 있네요. 그래서 바꾸어 보았습니다.
1. 먼저 할 일은 /data로 되어 있는 부분을 $g4['data'] 이런 식으로 교환하는 일입니다.
config.php에서 다음을 추가합니다:
$g4['data'] = "data";
$g4['data_path'] = $g4['path'] . "/" . $g4['data'];
파일 열기해서 $g4[path]/data로 되어 있는 것은 모두 $g4[data_path]로 바꾸어 줍니다.
또한 common.php에서 {$g4['path']}/data로 되어 있는 부분도 $g4[data_path]로 바꾸어 줍니다.
그리고 설치시에도 적용하게 하려면 install_db.php를 열어 /data로 되어 있는 부분을 /$g4[data]로 바꾸어 줍니다.
그리고 보안을 위해 data폴더의 이름을 다른 것으로 바꾸기 원하면 config.php의 $g4['data']의 값을 바꾸고 그리고 실제 data폴더의 이름을 바꾼 값과 똑같이 바꾸어주면 됩니다.
수정되는 파일 목록:
config.php
common.php
adm/admin.lib.php
adm/board_copy_update.php
adm/board_delete.inc.php
adm/board_form.php
adm/board_form_update.php
adm/member_form.php
adm/member_form_update.php
adm/session_delete.php
bbs/write_update.php
bbs/board_head.php
bbs/board_tail.php
bbs/delete.php
bbs/delete_all.php
bbs/download.php
bbs/move_udpate.php
bbs/register_form.php
bbs/register_form_udpate.php
bbs/tb.php
cheditor/insert_image.php
cheditor4/insert_image.php
geditor/upload.php
install/install_db.php
lib/common.lib.php
2. 두번째 할 일은 이미지를 가리는 일입니다. 링크 파일의 경우는 자동적으로 가려지나 이미지는 그렇지 못합니다. 그래서 만들어 보았습니다.
먼저 첨부된 image.php 파일을 그누보드의 최상단 폴더에 넣습니다. 모든 이미지는 이 스크립트 파일을 통해 보여지게 됩니다. 그래서 자연스럽게 경로가 감추어 집니다.
나중에 시간나면 그림 뿐 아니라 동영상이나 플래쉬도 확인을 해봐야겠죠.
image.php를 업로드 했으면 이 파일을 이용하도록 소스를 수정해야 합니다. 수정할 파일들 목록은 다음과 같습니다:
cheditor/insert_image.php
cheditor4/insert_image.php
geditor/upload.php
lib/common.lib.php
(1) 먼저 cheditor/insert_image.php는 cheditor4/insert_image.php와 비슷하므로 cheditor4/insert_image.php를 위주로 설명하면 56라인정도에
$filename = SAVE_AS_URL . $attach->file['name']; 가 보입니다. 이 라인을 주석처리한 후에 다음 으로 교체하세요:
$filename = "$g4[url]/image.php?uploader=cheditor4&img=$ym%2F".$attach->file['name'];
cheditor/insert_image.php도 비슷하므로 설명을 생략합니다.
(2) geditor/upload.php는 수정할 부분이 조금 됩니다. 그래서 파일을 링크합니다. 링크된 파일을 참조하세요.
(3) lib/common.lib.php 를 열어 view_file_link함수를 열어
return "<img src='$g4[data_path]/file/$board[bo_table]/".urlencode($file)."' name='target_resize_image[]' onclick='image_window(this);' style='cursor:pointer;' title='$content'>";
를 찾아 주석처리 합니다.
그리고 다음을 대신 넣어줍니다:
return "<img src='$g4[url]/image.php?bo_table=$board[bo_table]&img=".urlencode($file)."' name='target_resize_image[]' onclick='image_window(this);' style='cursor:pointer;' title='$content'>";
이렇게 하면 업로드된 모든 이미지들은 image.php를 거쳐 화면에 뿌려지게 됩니다. 그래서 자연적으로 경로가 감추어 집니다.
================================================================
이 적용을 한 후 만일 data 폴더의 이름을 바꿀 경우 이전에 editor로 업로드한 이미지가 보이지 않을 경우가 생길겁니다. 그런 경우를 위해서 다음과 같은 코드를 삽입을 합니다.
bbs/view.php 파일을 열어 다음을 찾습니다.
$view[content] = preg_replace("/(\<img )([^\>]*)(\>)/i", "\\1 name='target_resize_image[]' onclick='image_window(this)' style='cursor:pointer;' \\2 \\3", $view[content]);
그 코드 "앞"에 다음의 코드를 추가합니다. 반드시 앞쪽에 있어야 합니다... 뒤에 있어도 되지만 시간이 조금 단축되겠죠.
추가할 코드:
function apply_image_path_hide($matches)
{
function checksrc($matches)
{
global $g4;
$pattern = '/^('.preg_quote("$g4[url]/data/", '/').'('.explode('|', array($g4[editor], $g4[cheditor], $g4[cheditor4])).')\/)([0-9]{4})\/(.*)$/i';
$src = preg_replace($pattern, "$g4[url]/image.php?uploader=\\2&img=\\3%2F\\4", $matches[1]);
return 'src="'.$src.'"';
}
$matches[2] = preg_replace_callback("/src=\"([^\"]+)\"/i", checksrc, $matches[2]);
return $matches[1].$matches[2].$matches[3];
}
$view[content] = preg_replace_callback("/(\<img )([^\>]*)(\>)/i", apply_image_path_hide, $view[content]);
bbs/view.php 파일을 열어 다음을 찾습니다.
$view[content] = preg_replace("/(\<img )([^\>]*)(\>)/i", "\\1 name='target_resize_image[]' onclick='image_window(this)' style='cursor:pointer;' \\2 \\3", $view[content]);
그 코드 "앞"에 다음의 코드를 추가합니다. 반드시 앞쪽에 있어야 합니다... 뒤에 있어도 되지만 시간이 조금 단축되겠죠.
추가할 코드:
function apply_image_path_hide($matches)
{
function checksrc($matches)
{
global $g4;
$pattern = '/^('.preg_quote("$g4[url]/data/", '/').'('.explode('|', array($g4[editor], $g4[cheditor], $g4[cheditor4])).')\/)([0-9]{4})\/(.*)$/i';
$src = preg_replace($pattern, "$g4[url]/image.php?uploader=\\2&img=\\3%2F\\4", $matches[1]);
return 'src="'.$src.'"';
}
$matches[2] = preg_replace_callback("/src=\"([^\"]+)\"/i", checksrc, $matches[2]);
return $matches[1].$matches[2].$matches[3];
}
$view[content] = preg_replace_callback("/(\<img )([^\>]*)(\>)/i", apply_image_path_hide, $view[content]);
추천
3
3
댓글 10개
그런데 보안때문에 그런다면 소용 없을 것 같네요.
업로드된 파일은 거의 노출이기떄문에 data디렉토리는 금방 유추가 가능 할것 같네요
업로드된 파일은 거의 노출이기떄문에 data디렉토리는 금방 유추가 가능 할것 같네요
맞네요. 이미지를 생각못했네요... 기왕에 하는 김에 이미지까지 가려버릴까요?
이미지 path를 완벽하게 가려주면 좋은데, 그게 생각보다 까탈스럽더라구요.
그누보드의 최대 약점이죠.
그누보드의 최대 약점이죠.
파일 하나 만들어서 간단하게 처리해봤습니다...
감사합니다. 머리가 좀 정리되면 테스트를 해보겠습니다.
이 루틴이 너무 부러웠어요.
이 루틴이 너무 부러웠어요.
적용하고싶은데 으아~합니다.
이 적용을 한 후 만일 data 폴더의 이름을 바꿀 경우 이전에 cheditor로 업로드한 이미지가 보이지 않을 경우가 생길겁니다. 그런 경우를 위해서 다음과 같은 코드를 삽입을 합니다.
bbs/view.php 파일을 열어 다음을 찾습니다.
$view[content] = preg_replace("/(\<img )([^\>]*)(\>)/i", "\\1 name='target_resize_image[]' onclick='image_window(this)' style='cursor:pointer;' \\2 \\3", $view[content]);
그 코드 "앞"에 다음의 코드를 추가합니다. 반드시 앞쪽에 있어야 합니다... 뒤에 있어도 되지만 시간이 조금 단축되겠죠.
추가할 코드:
function apply_image_path_hide($matches)
{
function checksrc($matches)
{
global $g4;
$pattern = '/^('.preg_quote("$g4[url]/data/$g4[editor]/", '/').')([0-9]{4})\/(.*)$/i';
$src = preg_replace($pattern, "$g4[url]/image.php?uploader=$g4[editor]&img=\\2%2F\\3", $matches[1]);
return 'src="'.$src.'"';
}
$matches[2] = preg_replace_callback("/src=\"([^\"]+)\"/i", checksrc, $matches[2]);
return $matches[1].$matches[2].$matches[3];
}
$view[content] = preg_replace_callback("/(\<img )([^\>]*)(\>)/i", apply_image_path_hide, $view[content]);
bbs/view.php 파일을 열어 다음을 찾습니다.
$view[content] = preg_replace("/(\<img )([^\>]*)(\>)/i", "\\1 name='target_resize_image[]' onclick='image_window(this)' style='cursor:pointer;' \\2 \\3", $view[content]);
그 코드 "앞"에 다음의 코드를 추가합니다. 반드시 앞쪽에 있어야 합니다... 뒤에 있어도 되지만 시간이 조금 단축되겠죠.
추가할 코드:
function apply_image_path_hide($matches)
{
function checksrc($matches)
{
global $g4;
$pattern = '/^('.preg_quote("$g4[url]/data/$g4[editor]/", '/').')([0-9]{4})\/(.*)$/i';
$src = preg_replace($pattern, "$g4[url]/image.php?uploader=$g4[editor]&img=\\2%2F\\3", $matches[1]);
return 'src="'.$src.'"';
}
$matches[2] = preg_replace_callback("/src=\"([^\"]+)\"/i", checksrc, $matches[2]);
return $matches[1].$matches[2].$matches[3];
}
$view[content] = preg_replace_callback("/(\<img )([^\>]*)(\>)/i", apply_image_path_hide, $view[content]);
아~ 이거를 마지막으로 테스팅 하는데,
먼저 만들어둔 resize가 안되는 문제가 생기네요. ㅠ...ㅠ...
먼저 만들어둔 resize가 안되는 문제가 생기네요. ㅠ...ㅠ...
추가할 코드를 수정합니다... 아빠불당님이 지적해주셨는데 에디터를 여러개 쓸 경우가 존재한다는 점을 망각한 것 같아요... 위의 코멘트를 수정하려고 했는데 답글 코멘트가 달려서 수정이 안되네요... 그리고 원본 글에도 추가해야 겠습니다.
function apply_image_path_hide($matches)
{
function checksrc($matches)
{
global $g4;
$pattern = '/^('.preg_quote("$g4[url]/data/", '/').'('.explode('|', array($g4[editor], $g4[cheditor], $g4[cheditor4])).')\/)([0-9]{4})\/(.*)$/i';
$src = preg_replace($pattern, "$g4[url]/image.php?uploader=\\2&img=\\3%2F\\4", $matches[1]);
return 'src="'.$src.'"';
}
$matches[2] = preg_replace_callback("/src=\"([^\"]+)\"/i", checksrc, $matches[2]);
return $matches[1].$matches[2].$matches[3];
}
$view[content] = preg_replace_callback("/(\<img )([^\>]*)(\>)/i", apply_image_path_hide, $view[content]);
function apply_image_path_hide($matches)
{
function checksrc($matches)
{
global $g4;
$pattern = '/^('.preg_quote("$g4[url]/data/", '/').'('.explode('|', array($g4[editor], $g4[cheditor], $g4[cheditor4])).')\/)([0-9]{4})\/(.*)$/i';
$src = preg_replace($pattern, "$g4[url]/image.php?uploader=\\2&img=\\3%2F\\4", $matches[1]);
return 'src="'.$src.'"';
}
$matches[2] = preg_replace_callback("/src=\"([^\"]+)\"/i", checksrc, $matches[2]);
return $matches[1].$matches[2].$matches[3];
}
$view[content] = preg_replace_callback("/(\<img )([^\>]*)(\>)/i", apply_image_path_hide, $view[content]);
s