아이코드 악용?
본문
[코드는 딱히 안보셔도 됩니다]
아래에 본문 있습니다
1. 아래의 소스를 이용하여 sms_ok.php 파일을 만들어 루트에 업로드 합니다.
<?
include_once('./common.php');
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
$send_hp = "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***"; // 보내는 전화번호
$recv_hp = "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***"; // 받는 전화번호
$send_number = "$send_hp";
$recv_number = "$recv_hp";
$sms_content = $_POST['sender']."\n".$_POST['msg_content'];
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
$SMS->Add($recv_number, $send_number, $config['cf_icode_id'], iconv("utf-8", "euc-kr", stripslashes($sms_content)), "");
$SMS->Send();
alert("상담신청이 완료되었습니다.");
?>
2. 아래의 소스를 이용하여 발송페이지를 만듭니다. (div등의 레이어로 만드셔도 무방합니다)
<script>
function DoClear(tg) {
if (tg.value == tg.defaultValue) {
tg.value = '';
}
CalByte(tg);
}
function CalByte(tg){
var curText;
var strLen;
var byteIs;
var lastByte;
var thisChar;
var escChar;
var curTotalMsg;
var okMsg;
curText = new String(tg.value);
strLen = curText.length;
byteIs = 0;
for(i=0; i<strLen; i++) {
thisChar = curText.charAt(i);
escChar = escape(thisChar);
if (escChar.length > 4) {
byteIs += 2; //특수문자 한글인 경우.
}
else if(thisChar != '\r') {
//개행을 제외한 이외의 경우
byteIs += 1;
}
if(byteIs > 60){
alert('60바이트(한글30자)를 초과하실 수 없습니다.');
thisText = curText.substring(0, i);
tg.value = thisText;
byteIs = lastByte;
break;
}
lastByte = byteIs;
}
document.all.byte.value = byteIs;
}
function ClearMsg(){
document.all.msg_content.value = '';
CalByte(document.form_sms.msg_content);
document.form_sms.msg_content.focus();
}
function CheckIt(fm){
if(!fm.msg_content.value || fm.msg_content.value == fm.msg_content.defaultValue){
alert("[안내] 내용을 입력하세요.");
ClearMsg();
return false;
}
if(!fm.sender.value || fm.sender.value.length < 10){
alert("[안내] 보내는 분의 전화번호를 정확히 입력하세요.");
fm.sender.focus();
return false;
}
return true;
}
</script>
<form name="form_sms" id="form_sms" method="post" action="/sms_ok.php" onsubmit="return CheckIt(this);">
<div class="byte">
<input type="text" name="byte" class="sms_input_none" value="0" size="2" maxsize="3" readonly> / 60
</div>
<div class="lcd_bg">
<textarea name='msg_content' class='lcd' onclick='DoClear(this)' onselect='DoClear(this)' onchange='CalByte(this)'>기본 보여주는 내용을 입력합니다.</textarea>
</div>
<div class="back_info">
<input type="text" name="sender" size="11" maxlength="11" style="ime-mode:disabled" class="sms_input" value="">
<input type="submit" value="전송">
</div>
</form>
구글에서 위코드 검색해서 아이코드 문자서비스 사용하고있습니다
(보통 메인에 쓰는 상담신청 그런걸로..)
근데 그냥 이름/연락처 쓰고 전송만 누르면되니 그냥 아무거나 쓰고 전송을 반복하여 피해를 주는 일이 생깁니다..
이거 어떻게 막을방법 있나요?
!-->!-->답변 2
누구나 보낼수있는 sms 상담신청같은경우 특별히 막지 않는한 고의적으로 보내는 메시지를 막을 방법은 프로그램으로 막는 방법 밖에 없습니다.
1. 동일한 아이피 일 1회 발송 하도록 막는다.
2. sms_ok 부분에 쿠키를 심어서 해당 쿠키가 있는경우 쿠키의 라이프타임까지 발송을 막는다
3. 동일한 전화 번호 신청의 경우 막는다.
4. 회원 또는 본인 인증회원의 경우에만 상담신청을 남길수있다
위와 같은 방법으로 조절 가능 할것으로 보입니다.
반복적인 sms 나 글등은 항상
디비처리해서 중복가입및 데이터처리를 막으면 됩니다.
ajax로 처리할경우에도 반복처리를 막으면됩니다
답변을 작성하시기 전에 로그인 해주세요.