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

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

페이지 정보

작성자 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글 2건 조회 6,231회 작성일 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 49건 1 페이지
Q&A 목록
번호 제목 글쓴이 조회 날짜
49 no_profile nick1224 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 3796 05-25
48 no_profile 라아 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 3783 11-13
47 no_profile 푸푸 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3608 11-01
46 no_profile 밤일기 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 4478 08-30
45 no_profile 신재영 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4747 04-25
44 no_profile 수리매니아 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 5328 02-06
43 no_profile orange 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4669 01-31
42 no_profile MintState 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 4954 02-01
41 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5189 04-27
40 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5635 04-27
39 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 6849 04-27
38 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5404 04-19
37 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5462 04-21
열람중 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 6232 04-14
35 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5176 04-12
34 no_profile 카가 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5623 03-31
33 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5190 03-25
32 no_profile 태양11 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 5110 03-13
31 no_profile 명예 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5598 03-12
30 no_profile shop1234 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 5254 01-26
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2018, YesYo.com MintState. ™