YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Miscellaneous > Q&A
검색
멤버이름    오토
비밀번호 
 

민트팝업 보안의 취약점??

페이지 정보

작성자 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글 2건 조회 14,700회 작성일 10-04-14 20:51

본문

팝업 보여주는 레벨을 설정을 해놨는데. 비회원이라고해도 팝업 주소만알면 주소창에 입력하고 이동하면 해당팝업이
그대로 노출되어버립니다..

예를들면

http://www.munstar.com/MintUtil/popup.html?m=test&pop_id=11

이 팝업을 레벨 7이상 회원에게만 노출하고싶은데 레벨이 안되거나 비회원이  팝업 아이디의 뒤 숫자만 바꿔가면서 쭈욱 테스트해보면
팝업을 다 얻을 수 있더라구요..

팝업창이 해당주소로 바로 들어가더라도 설정해놓은 레벨이 아니면 경고창과함께 안뜨도록하려면 어떻게 해야하나요???

두번째로, 레벨 1이상 볼수있다 하더라도 팝업 html 안에서 아래와같이 설정하면 해당 구문만은 지정한 레벨만 보이도록 하고싶은데 이건 방법이 없는지요??

<?if($member[mb_level] > 9) {?>
<a class="menuItem" href="/bbs/board.php?bo_table=B49"><font color=#ffffff>그누보드스킨</font></a>
<a class="menuItem" href="/plugin/webhard/webftp"><font color=#ffffff>아작웹하드</font></a>
<? } ?>

댓글목록

MintState님의 댓글

no_profile MintState 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

하. 별로 그런 문제는 생각하지 않았는데..
우선 첫번째 문제는...
popup.html  파일을 열어서..

if ($data[pop_level] > $member[mb_level]) alert_close('해당 레벨은 볼수 없어요~');
을 추가 해주면 됩니다.

두번째 문제는... 조금 어렵습니다. 레벨에 따라서 구분을 해줘야 하는데.
템플릿정도 이용하면 될것 같습니다.
다만 팝업을 html이나 text를 쓰지 않고 WYSIWYG 에디터를 씁니다. 프로그램이나 html을 모르는 분들을 위해 쉽게 쓸수 있기 때문에 WYSIWYG을 쓰는거죠.
님이 원하시는것은 WYSIWYG을 쓸수 없습니다. WYSIWYG을 써도 되긴하지만 여러가지 문제가 생김니다.

간단히 응용하시려면..
$data[pop_contents] = preg_replace_callback('@\\[LEVEL([^\\]]*)\\](.*)\\[/LEVEL\\]@Usi', 'level_pass', $data[pop_contents]);
function level_pass($matche)
{
global $member;
if (strlen($matche[1]) == 0) {
$text .= $matche[2]; // 혹시 레벨을 지정하지 않는 실수를 할까봐....
} else {
if ($member[mb_level] >= $matche[1]) $text .= $matche[2];
}
return $text;
}

예를들어 "레벨 4이상만 보입니다. [LEVEL 4]레벨4내용[/LEVEL]<br /> 레벨 2이상만 보입니다. [LEVEL 2]레벨2내용[/LEVEL] " 이런식의 내용이 입력 되었다면 레벨 2의 멤버는..

레벨 4이상만 보입니다.
레벨 2이상만 보입니다. 레벨2내용

이런식으로 보입니다. 지정레벨 이상만 내용을 볼수 있다는 거죠..

명예님의 댓글

no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

popup.html

<?
include_once("./_common.php");

include_once("$g4[path]/MintUtil/MintLib.php");

if(isDbTable($Mint[DB_popup]) != 1) {
alert_close($Mint[name].'(POPUP) DB가 생성되지 않았습니다.');
}

$sql = "select * from $Mint[DB_popup] where pop_id='$pop_id' ";
$sel = mysql_query($sql);
$data = mysql_fetch_array($sel);

$cookie_id = "popup_".$data[pop_id];

$data[pop_contents] = preg_replace_callback('@\\[LEVEL([^\\]]*)\\](.*)\\[/LEVEL\\]@Usi', 'level_pass', $data[pop_contents]);
function level_pass($matche)
{
global $member;
if (strlen($matche[1]) == 0) {
$text .= $matche[2]; // 혹시 레벨을 지정하지 않는 실수를 할까봐....
} else {
if ($member[mb_level] >= $matche[1]) $text .= $matche[2];
}
return $text;
}

if ($data[pop_level] > $member[mb_level]) alert_close('해당 레벨은 볼수 없어요~');
?>

이렇게 넣고 테스트했더니 말씀해주신것처럼 해결이 되었습니다^^ 감사합니다.

Total 20건 1 페이지
Q&A 목록
번호 제목 글쓴이 조회 날짜
20 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 13642 04-27
19 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 14094 04-27
18 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 15772 04-27
17 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 13583 04-19
16 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 14190 04-21
열람중 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 14701 04-14
14 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 13391 04-12
13 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 13890 03-25
12 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 14494 03-12
11 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 12957 10-20
10 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 11514 05-28
9 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 11211 06-06
8 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 13632 05-14
7 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 11508 04-26
6 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 11588 04-21
5 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 13096 04-17
4 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 10695 04-03
3 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 11222 03-26
2 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 10336 03-16
1 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 13057 03-13
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™