From 6c42092e440336483153bc0d8aa9d47d4067fd5c Mon Sep 17 00:00:00 2001 From: subsub Date: Fri, 11 Jul 2025 18:28:36 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=ED=85=9C=ED=94=8C=EB=A6=BF=EB=AA=85=20?= =?UTF-8?q?=EB=84=98=EC=96=B4=EA=B0=80=EB=8A=94=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/publish/css/popupLayer.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/webapp/publish/css/popupLayer.css b/src/main/webapp/publish/css/popupLayer.css index 25a9f1b7..01345959 100644 --- a/src/main/webapp/publish/css/popupLayer.css +++ b/src/main/webapp/publish/css/popupLayer.css @@ -1063,6 +1063,7 @@ .template_choice_popup .kakao_template_list .kakao_template_info dl{display: flex; padding: 6px 0;} .template_choice_popup .kakao_template_list .kakao_template_info dt{position: relative; width: 76px; margin: 0 13px 0 0;} .template_choice_popup .kakao_template_list .kakao_template_info dt::after{position: absolute; content: " "; width: 1px; height: 12px; background-color: #d5d5d5; right: 0; top: 2px;} +.template_choice_popup .kakao_template_list .kakao_template_info dd{width:calc(100% - 76px);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;} .template_choice_popup .kakao_template_list .kakao_template_info dd span{color: #002c9a; font-weight: bold;} .template_choice_popup .kakao_template_list .cf_text{width: calc(100% - 31px); margin: 10px 0 30px 0; font-size: 14px; color: #666; text-align: right;} From 00dea76c5c18ed7a290fc232a39f734d99c43653 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 16 Jul 2025 17:39:19 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=EA=B0=9C=EC=A0=95=EC=95=BD=EA=B4=80=202024?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp | 2 +- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp | 2 +- src/main/webapp/publish/layout/_header.html | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 3d148367..5512880c 100644 --- a/.gitignore +++ b/.gitignore @@ -201,3 +201,4 @@ fabric.properties rebel.xml /mvnw /mvnw.cmd +/.gemini.zip diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp index 0a766c42..459e67ff 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp @@ -27,7 +27,7 @@ function footerSiteLinkPageTwoGo (){
diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp index d5a05e8c..6a9f7fc6 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp @@ -1666,7 +1666,7 @@ function actionLogin_end(){
  • 공지사항
  • -
  • 이용약관
  • +
  • 이용약관
  • 자주하는 질문
  • 1:1 문의
  • 불편신고
  • diff --git a/src/main/webapp/publish/layout/_header.html b/src/main/webapp/publish/layout/_header.html index d82eed8e..74325529 100644 --- a/src/main/webapp/publish/layout/_header.html +++ b/src/main/webapp/publish/layout/_header.html @@ -255,7 +255,7 @@
    • 공지사항
    • -
    • 이용약관
    • +
    • 이용약관
    • 자주하는 질문
    • 1:1 문의
    • 불편신고
    • From 4cea36d8fa7b4003d417f5d9f05f0c9822ccd55d Mon Sep 17 00:00:00 2001 From: subsub Date: Fri, 18 Jul 2025 18:16:46 +0900 Subject: [PATCH 3/9] =?UTF-8?q?=EC=B9=9C=EA=B5=AC=ED=86=A1=20>=20=EB=8C=80?= =?UTF-8?q?=EC=B2=B4=EB=AC=B8=EC=9E=90=20=EC=9E=A5=EB=AC=B8,=20=EB=8B=A8?= =?UTF-8?q?=EB=AC=B8,=20=ED=8F=AC=ED=86=A0=EB=AC=B8=EC=9E=90=20=EC=9D=BC?= =?UTF-8?q?=20=EA=B2=BD=EC=9A=B0=20textarea=20height=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/publish/css/content.css | 11 +- src/main/webapp/publish/js/content.js | 29 +++-- .../webapp/publish/kakao_friendtalk_send.html | 104 ++++++++++++++++-- 3 files changed, 125 insertions(+), 19 deletions(-) diff --git a/src/main/webapp/publish/css/content.css b/src/main/webapp/publish/css/content.css index fdbe1745..ee304cf7 100644 --- a/src/main/webapp/publish/css/content.css +++ b/src/main/webapp/publish/css/content.css @@ -1771,12 +1771,17 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .kakaotalksend_cont .kakao_wrap .send_right .phone .phoneIn .text_preview{height: 78%;} .kakaotalksend_cont .kakao_wrap .kakao_template_text {display: flex;justify-content: space-between;} .kakaotalksend_cont .kakao_wrap .put_right .btn_popup_wrap{margin: 0 0 5px 0;} -.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left{height: 234px;} +.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left{position:relative;height: 234px;} .kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.long{height: 305px;} +.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.photo{height: 385px;} .kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left textarea{padding:0 5px;} -.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.short textarea{height: calc(100% - 105px);} -.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.long textarea{height: 220px;} +.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.short textarea{height: calc(100% - 82px);} +.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.short .ad_txt+textarea{height: calc(100% - 105px);} +.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.long textarea{height: calc(100% - 61px);} +.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.long .ad_txt+textarea{height: calc(100% - 86px);} +.kakaotalksend_cont .kakao_wrap .replace_send_wrap .put_left.photo .ad_txt+textarea{height: calc(100% - 184px);} .kakaotalksend_cont .kakao_wrap .replace_send_wrap .sub_ad_text p{padding:3px 10px 0 0;} + .kakaotalksend_cont .kakao_wrap .button_type_wrap{display: flex; border: 1px solid #e5e5e5; border-radius: 5px; padding: 10px 20px; margin: 10px 0 0 0;} .kakaotalksend_cont .kakao_wrap .button_type_wrap dt{width: 110px; font-weight: 400; padding: 8px 0 0 0;} .kakaotalksend_cont .kakao_wrap .button_type_wrap .button_type_input{width: 483px;} diff --git a/src/main/webapp/publish/js/content.js b/src/main/webapp/publish/js/content.js index 921b9966..fa03c0e8 100644 --- a/src/main/webapp/publish/js/content.js +++ b/src/main/webapp/publish/js/content.js @@ -542,16 +542,27 @@ $(document).ready(function () { "height": "calc(100% - 18px)" }); + $(".friend_talk_wrap .replace_send_wrap .put_left").each(function(idx, itm){ + if($(itm).is(".short") == true){ + //단문일 경우 + $(itm).find("textarea").css({ + "height": "calc(100% - 79px)" + }); + }else if($(itm).is(".photo") == true){ + //포토문자일 경우 + $(itm).find("textarea").css({ + "height": "calc(100% - 146px)" + }); + }else{ + // 장문일 경우 + $(itm).find("textarea").css({ + "height": "calc(100% - 59px)" + }); + } + + }) + - if($(".friend_talk_wrap .replace_send_wrap .put_left").is(".short") == true){ - $(".friend_talk_wrap .replace_send_wrap textarea").css({ - "height": "calc(100% - 79px)" - }); - }else{ - $(".friend_talk_wrap .replace_send_wrap textarea").css({ - "height": "calc(100% - 59px)" - }); - } } else { $(".ad_txt, .sub_ad_text p,.friend_talk_title,.kakao_block_text").show(); diff --git a/src/main/webapp/publish/kakao_friendtalk_send.html b/src/main/webapp/publish/kakao_friendtalk_send.html index 63ddff4b..52ae646c 100644 --- a/src/main/webapp/publish/kakao_friendtalk_send.html +++ b/src/main/webapp/publish/kakao_friendtalk_send.html @@ -778,15 +778,13 @@
        -
        -

        (광고)

        -
        +
        +

        (광고)

        +
        +
        -
        -

        무료거부 0808800858

        -

        0 / @@ -805,7 +803,99 @@

        - +

        * 현재 [단문] 0건 발송 가능합니다.

        + + + + 내용 + +
        +
        + +
          + + +
          +

          (광고)

          +
          + +
          +
          +

          + 0 / + + 90byte +

          + 장문 +
          +
          +
          +
          + +
          + +
          +
          + +
          +

          * 현재 [단문] 0건 발송 가능합니다.

          + + + + 내용 + +
          +
          + +
            +
          • +
            + thumb1 +
            + + +
          • +
          • +
            + thumb1 +
            + + +
          • +
          • +
            + thumb1 +
            + + +
          • +
          + + +
          +

          (광고)

          +
          + +
          +
          +

          + 0 / + + 90byte +

          + 그림 +
          +
          +
          +
          + +
          + +
          +
          + +
          +

          * 현재 [단문] 0건 발송 가능합니다.

          From 5bd4c8ba3723f935cc92e25984ec02b0a5234fcd Mon Sep 17 00:00:00 2001 From: ijunho Date: Mon, 21 Jul 2025 11:08:40 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=EC=9B=B9=EC=84=9C=EB=B2=84=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4,=20=EC=84=B8=EC=85=98=EC=84=9C=EB=B2=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80,=20=EB=B3=B8=EC=9D=B8=EC=9D=B8=EC=A6=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=20-=20http1.1=20->=20http2.0=20=EC=9B=B9=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EA=B5=90=EC=B2=B4=20=20-=20valkey=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=20-=20=EB=B3=B8=EC=9D=B8=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 53 +- .../com/cmm/session/HttpSessionConfig.java | 39 + .../cert/phone/service/CertPhoneService.java | 7 +- .../cert/phone/service/MberCertPhoneVO.java | 83 +- .../cert/phone/service/impl/CertPhoneDAO.java | 9 + .../service/impl/CertPhoneServiceImpl.java | 37 + .../phone/web/CertPhoneWebController.java | 45 ++ .../fax/addr/web/FaxAddrGroupController.java | 38 +- .../let/mjo/addr/web/AddrGroupController.java | 37 +- .../itn/let/mjo/test/web/TestController.java | 8 +- .../let/uat/uia/web/EgovLoginController.java | 146 ++-- .../let/uat/uia/web/EgovMypageController.java | 102 ++- .../itn/let/uat/uia/web/KmcCertChecker.java | 752 +++--------------- .../egovProps/globals_dev.properties | 16 +- .../egovProps/globals_local.properties | 7 +- .../egovProps/globals_prod.properties | 7 +- .../let/cert/MjonCertPhone_SQL_mysql.xml | 37 +- .../jsp/web/addr/AddrGroupListAjax.jsp | 4 +- .../jsp/web/cop/bbs/include/mberSecession.jsp | 4 +- .../jsp/web/fax/addr/FaxAddrGroupListAjax.jsp | 4 +- .../WEB-INF/jsp/web/login/findUserId.jsp | 4 +- .../web/login/humanPageAuthenticatedPage.jsp | 4 +- .../jsp/web/login/test_usrCheckTerms.jsp | 4 +- .../WEB-INF/jsp/web/login/usrCheckTerms.jsp | 33 +- .../jsp/web/login/usrCheckTerms_back2.jsp | 4 +- .../jsp/web/user/mberCompanyInfoChange.jsp | 4 +- .../WEB-INF/jsp/web/user/mberInfoChange.jsp | 4 +- .../WEB-INF/jsp/web/user/mberInfoIndex.jsp | 4 +- .../WEB-INF/jsp/web/user/mberSecession.jsp | 4 +- .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 4 +- .../jsp/web/user/sendNumberManageRegister.jsp | 4 +- .../web/user/sendNumberManage_bak220502.jsp | 4 +- src/main/webapp/WEB-INF/web.xml | 10 +- src/main/webapp/publish/js/common.js | 18 + .../publish/kmc/kmcis_web_sample_step02.jsp | 4 +- 35 files changed, 688 insertions(+), 856 deletions(-) create mode 100644 src/main/java/itn/com/cmm/session/HttpSessionConfig.java create mode 100644 src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java diff --git a/pom.xml b/pom.xml index 7a7f5633..fd1e0201 100644 --- a/pom.xml +++ b/pom.xml @@ -54,28 +54,8 @@ - mvn2 - https://repo1.maven.org/maven2/ - - true - - - true - - - - egovframe - https://www.egovframe.go.kr/maven/ - - true - - - false - - - - egovframe2 - http://maven.egovframe.kr:8080/maven/ + maven-public + http://nexus.iten.co.kr:9999/repository/maven-public/ true @@ -83,12 +63,6 @@ false - - - jitpack.io - https://jitpack.io - - @@ -568,7 +542,28 @@ provided - + + + + + + org.springframework.session + spring-session + 1.3.1.RELEASE + + + redis.clients + jedis + 2.9.0 + + + + org.springframework.data + spring-data-redis + 1.8.11.RELEASE + + + diff --git a/src/main/java/itn/com/cmm/session/HttpSessionConfig.java b/src/main/java/itn/com/cmm/session/HttpSessionConfig.java new file mode 100644 index 00000000..43fbb1db --- /dev/null +++ b/src/main/java/itn/com/cmm/session/HttpSessionConfig.java @@ -0,0 +1,39 @@ +package itn.com.cmm.session; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; + +@Configuration +@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) // 세션 timeout 설정 +public class HttpSessionConfig { + + @Value("#{globalSettings['Globals.valkey.ip']}") + private String ip; + + @Value("#{globalSettings['Globals.valkey.port']}") + private int port; + + @Value("#{globalSettings['Globals.valkey.password']}") + private String password; + + @Bean + public JedisConnectionFactory connectionFactory() { + JedisConnectionFactory factory = new JedisConnectionFactory(); + factory.setHostName(this.ip); + factory.setPort(this.port); + factory.setPassword(this.password); + factory.afterPropertiesSet(); + return factory; + } + + @Bean + public RedisTemplate redisTemplate() { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(connectionFactory()); + return template; + } +} diff --git a/src/main/java/itn/let/cert/phone/service/CertPhoneService.java b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java index 42b80989..90ae82de 100644 --- a/src/main/java/itn/let/cert/phone/service/CertPhoneService.java +++ b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java @@ -2,7 +2,10 @@ package itn.let.cert.phone.service; import java.util.List; +import javax.servlet.http.HttpServletRequest; + import itn.let.mail.service.StatusResponse; +import itn.let.uat.uia.service.AuthCertVO; import itn.let.uat.uia.web.SendLogVO; public interface CertPhoneService { @@ -34,9 +37,9 @@ public interface CertPhoneService { public StatusResponse selectSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO); + public MberCertPhoneVO selectCertUrlCode(MberCertPhoneVO mberCertPhoneVO) throws Exception; - - + public StatusResponse insertCertLog(HttpServletRequest request) throws Exception; diff --git a/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java index 81eb9ae2..249ef0f2 100644 --- a/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java +++ b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java @@ -34,8 +34,17 @@ public class MberCertPhoneVO extends UserDefaultVO{ private String checkNo; - - + private String trUrl; + private String urlCode; + private String url; + private String host; + private String name = ""; + private String phoneNo = ""; + private String phoneCorp = ""; + private String birthDay = ""; + private String gender = ""; + private String nation = "0"; + private String plusInfo = ""; public String getMberId() { @@ -74,6 +83,76 @@ public class MberCertPhoneVO extends UserDefaultVO{ public void setCheckNo(String checkNo) { this.checkNo = checkNo; } + public String getUrlCode() { + return urlCode; + } + public void setUrlCode(String urlCode) { + this.urlCode = urlCode; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + public String getHost() { + return host; + } + public void setHost(String host) { + this.host = host; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getPhoneNo() { + return phoneNo; + } + public void setPhoneNo(String phoneNo) { + this.phoneNo = phoneNo; + } + public String getPhoneCorp() { + return phoneCorp; + } + public void setPhoneCorp(String phoneCorp) { + this.phoneCorp = phoneCorp; + } + public String getBirthDay() { + return birthDay; + } + public void setBirthDay(String birthDay) { + this.birthDay = birthDay; + } + public String getGender() { + return gender; + } + public void setGender(String gender) { + this.gender = gender; + } + public String getNation() { + return nation; + } + public void setNation(String nation) { + this.nation = nation; + } + public String getPlusInfo() { + return plusInfo; + } + public void setPlusInfo(String plusInfo) { + this.plusInfo = plusInfo; + } + public String getTrUrl() { + return trUrl; + } + public void setTrUrl(String trUrl) { + this.trUrl = trUrl; + } + + + + diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java index da5e107a..2c9d022c 100644 --- a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Repository; import egovframework.rte.psl.dataaccess.EgovAbstractDAO; import itn.let.cert.phone.service.MberCertPhoneVO; +import itn.let.uat.uia.service.AuthCertVO; @Repository("CertPhoneDAO") public class CertPhoneDAO extends EgovAbstractDAO { @@ -38,4 +39,12 @@ public class CertPhoneDAO extends EgovAbstractDAO { public int countSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO) { return (int) select("mberCertPhoneVO.countSysMsgLogCheck", mberCertPhoneVO); } + + public MberCertPhoneVO selectCertUrlCode(MberCertPhoneVO mberCertPhoneVO) { + return (MberCertPhoneVO) select("certPhoneDAO.selectCertUrlCode", mberCertPhoneVO); + } + + public void insertCertLog(AuthCertVO authCertVO) throws Exception { + insert("certPhoneDAO.insertCertLog", authCertVO); + } } diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java index 2fae49c5..3f32264b 100644 --- a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java @@ -1,17 +1,25 @@ package itn.let.cert.phone.service.impl; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.util.Date; import java.util.List; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import itn.com.cmm.LoginVO; +import itn.com.cmm.util.IpUtil; +import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.cert.phone.service.CertPhoneService; import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.mail.service.StatusResponse; +import itn.let.uat.uia.service.AuthCertVO; @Service("CertPhoneService") public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements CertPhoneService { @@ -99,6 +107,35 @@ public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements Cer return new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()); } + @Override + public MberCertPhoneVO selectCertUrlCode(MberCertPhoneVO mberCertPhoneVO) { + return certPhoneDAO.selectCertUrlCode(mberCertPhoneVO); + } + + @Override + public StatusResponse insertCertLog(HttpServletRequest request) throws Exception { + try { + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + //KMC 본인인증 로그 insert + AuthCertVO authCertVO = new AuthCertVO(); + authCertVO.setMberId(userId); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + authCertVO.setCertDate(sdf.format(new Date())); + authCertVO.setCertType("본인인증 시도"); + authCertVO.setCertIpaddr(IpUtil.getClientIP(request)); + + certPhoneDAO.insertCertLog(authCertVO); + } catch (Exception e) { + System.out.println("본인인증 시도 로그 실패"); + } + + return new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()); + } + + } diff --git a/src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java b/src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java new file mode 100644 index 00000000..3aeccb1f --- /dev/null +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneWebController.java @@ -0,0 +1,45 @@ +package itn.let.cert.phone.web; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import itn.com.cmm.LoginVO; +import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.phone.service.CertPhoneService; +import itn.let.cert.phone.service.MberCertPhoneVO; +import itn.let.mail.service.StatusResponse; +import itn.let.mjo.msg.service.MjonMsgVO; +import itn.let.mjo.msgdata.service.MjonMsgDataService; +import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.uat.uia.service.AuthCertVO; +import itn.let.uat.uia.web.SendLogVO; + +@Controller +public class CertPhoneWebController { + + @Resource(name = "CertPhoneService") + private CertPhoneService certPhoneService; + + @RequestMapping(value = {"/web/cert/log/insertCertLog.do"}) + public ResponseEntity insertCertLog(HttpServletRequest request) throws Exception { + + + + + + + return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, certPhoneService.insertCertLog(request), LocalDateTime.now())); + } +} \ No newline at end of file diff --git a/src/main/java/itn/let/fax/addr/web/FaxAddrGroupController.java b/src/main/java/itn/let/fax/addr/web/FaxAddrGroupController.java index ae341a0d..2031477c 100644 --- a/src/main/java/itn/let/fax/addr/web/FaxAddrGroupController.java +++ b/src/main/java/itn/let/fax/addr/web/FaxAddrGroupController.java @@ -21,6 +21,7 @@ import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.fax.addr.service.FaxAddrGroupService; import itn.let.fax.addr.service.FaxAddrGroupVO; import itn.let.fax.addr.service.FaxAddrService; @@ -52,6 +53,9 @@ public class FaxAddrGroupController { @Resource(name = "mberManageService") private EgovMberManageService mberManageService; + @Resource(name = "KmcCertChecker") + private KmcCertChecker kmcCertCheck; + /** * 팩스 주소록 그룹 리스트 @@ -544,21 +548,25 @@ public class FaxAddrGroupController { modelAndView.setViewName("jsonView"); try { - KmcCertChecker kmcCertCheck = new KmcCertChecker(); - - // mberId null일경우 ""로 - mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); - - // kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://219.240.88.15:8095"; - } else { - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } - - AuthCertVO certVO = kmcCertCheck.authCertCheckEight(serverNm + "/web/cop/kmc/authRequestAddrSubmitAjax.do", - mberManageVO.getMberId()); +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// // mberId null일경우 ""로 +// mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); +// +// // kmc 본인인증 실/개발 서버 구분 +// String serverNm = ""; +// if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://219.240.88.15:8095"; +// } else { +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } + + + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAddrSubmitAjax.do"); + mberCertPhoneVO.setPlusInfo(mberManageVO.getMberId()); + + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("tr_cert", certVO.getTr_cert()); modelAndView.addObject("tr_url", certVO.getTr_url()); diff --git a/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java b/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java index d024024b..4ecb759b 100644 --- a/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java +++ b/src/main/java/itn/let/mjo/addr/web/AddrGroupController.java @@ -25,6 +25,7 @@ import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.mjo.addr.service.AddrGroupService; import itn.let.mjo.addr.service.AddrGroupVO; import itn.let.mjo.addr.service.AddrService; @@ -72,6 +73,9 @@ public class AddrGroupController { @Resource(name = "mberManageService") private EgovMberManageService mberManageService; + @Resource(name = "KmcCertChecker") + private KmcCertChecker kmcCertCheck; + /** * 주소록 그룹 리스트 * @param addrGroupVO @@ -933,21 +937,24 @@ public class AddrGroupController { modelAndView.setViewName("jsonView"); try { - KmcCertChecker kmcCertCheck = new KmcCertChecker(); - - // mberId null일경우 ""로 - mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); - - // kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://219.240.88.15:8095"; - } else { - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } - - AuthCertVO certVO = kmcCertCheck.authCertCheckEight(serverNm + "/web/cop/kmc/authRequestAddrSubmitAjax.do", - mberManageVO.getMberId()); +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// // mberId null일경우 ""로 +// mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); +// +// // kmc 본인인증 실/개발 서버 구분 +// String serverNm = ""; +// if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://219.240.88.15:8095"; +// } else { +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } + + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAddrSubmitAjax.do"); + mberCertPhoneVO.setPlusInfo(mberManageVO.getMberId()); + + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("tr_cert", certVO.getTr_cert()); modelAndView.addObject("tr_url", certVO.getTr_url()); diff --git a/src/main/java/itn/let/mjo/test/web/TestController.java b/src/main/java/itn/let/mjo/test/web/TestController.java index a0c0b42e..f052cccc 100644 --- a/src/main/java/itn/let/mjo/test/web/TestController.java +++ b/src/main/java/itn/let/mjo/test/web/TestController.java @@ -894,11 +894,11 @@ public class TestController { serverNm = request.getScheme() + "://munjaon.co.kr"; } - AuthCertVO certVO = kmcCertCheck.authCertCheck(serverNm + "/web/cop/kmc/authRequestAjax.do"); +// AuthCertVO certVO = kmcCertCheck.authCertCheck(serverNm + "/web/cop/kmc/authRequestAjax.do"); - model.addAttribute("tr_cert", certVO.getTr_cert()); - model.addAttribute("tr_url", certVO.getTr_url()); - model.addAttribute("tr_add", certVO.getTr_add()); +// model.addAttribute("tr_cert", certVO.getTr_cert()); +// model.addAttribute("tr_url", certVO.getTr_url()); +// model.addAttribute("tr_add", certVO.getTr_add()); } diff --git a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java index eed122fa..fdc173c5 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java @@ -252,6 +252,10 @@ public class EgovLoginController { @Resource(name = "CertIpService") private CertIpService certIpService; + @Resource(name = "KmcCertChecker") + private KmcCertChecker kmcCertCheck; + + private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); /* 문자온 사용자 로그인 시작 */ @@ -319,21 +323,21 @@ public class EgovLoginController { // 핸드폰인증만 사용할 시 if (joinSettingVO.getJoinCertType().equals("M")) { - KmcCertChecker kmcCertCheck = new KmcCertChecker(); - - // kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://219.240.88.15:8095"; - }else if(request.getRequestURL().toString().contains("www.")){ - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } - else { - serverNm = request.getScheme() + "://munjaon.co.kr"; - } - - AuthCertVO certVO = kmcCertCheck.authCertCheck(serverNm + "/web/cop/kmc/authRequestAjax.do"); - +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// String serverNm = request.getScheme() + "://" + request.getServerName(); +// if(request.getServerPort() != 80 +// && request.getServerPort() != 443) { +// serverNm += ":" + request.getServerPort(); +// } +// +// AuthCertVO certVO = kmcCertCheck.authCertCheck(serverNm + "/web/cop/kmc/authRequestAjax.do"); +// + + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAjax.do"); + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + model.addAttribute("tr_cert", certVO.getTr_cert()); model.addAttribute("tr_url", certVO.getTr_url()); model.addAttribute("tr_add", certVO.getTr_add()); @@ -363,19 +367,29 @@ public class EgovLoginController { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); - KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); // kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://219.240.88.15:8095"; - } else { - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } +// String serverNm = ""; +// if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://219.240.88.15:8095"; +// } else { +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } + + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestAjax.do"); + mberCertPhoneVO.setName(mberManageVO.getMberNm()); + mberCertPhoneVO.setPhoneNo(mberManageVO.getMoblphonNo()); + mberCertPhoneVO.setGender(mberManageVO.getSexdstnCode()); + mberCertPhoneVO.setNation(mberManageVO.getNationality()); + mberCertPhoneVO.setBirthDay(mberManageVO.getBirth()); + + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); - AuthCertVO certVO = kmcCertCheck.authCertCheckTwo(serverNm + "/web/cop/kmc/authRequestAjax.do", - mberManageVO.getMberNm(), mberManageVO.getMoblphonNo(), mberManageVO.getSexdstnCode(), - mberManageVO.getNationality(), mberManageVO.getBirth()); +// AuthCertVO certVO = kmcCertCheck.authCertCheckTwo(serverNm + "/web/cop/kmc/authRequestAjax.do", +// mberManageVO.getMberNm(), mberManageVO.getMoblphonNo(), mberManageVO.getSexdstnCode(), +// mberManageVO.getNationality(), mberManageVO.getBirth()); System.out.println("++++++++++++ 세션체크222 ::: " + (MberManageVO) session.getAttribute("mberSession")); @@ -3991,26 +4005,42 @@ public class EgovLoginController { // modelAndView.addObject("status", "fail"); try { - KmcCertChecker kmcCertCheck = new KmcCertChecker(); - - // mberId null일경우 ""로 - mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); - - // kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if (request.getServerName().contains("119.193.215.98") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://119.193.215.98:8095"; - } else { - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } - String authRUrl = serverNm + mberManageVO.getAuthRUrl(); +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// // mberId null일경우 ""로 +// mberManageVO.setMberId(EgovStringUtil.isNullToString(mberManageVO.getMberId())); +// +// // kmc 본인인증 실/개발 서버 구분 +// String serverNm = ""; +// if (request.getServerName().contains("119.193.215.98") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://119.193.215.98:8095"; +// } else { +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } +// String authRUrl = serverNm + mberManageVO.getAuthRUrl(); +// +// AuthCertVO certVO = kmcCertCheck.authCertCheckThree(authRUrl, mberManageVO); +// +// + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/cop/kmc/authRequestFindIdPwAjax.do"); + mberCertPhoneVO.setName(mberManageVO.getMberNm()); + mberCertPhoneVO.setPhoneNo(mberManageVO.getMoblphonNo()); + + String plusInfo = ""; + plusInfo += mberManageVO.getMberId(); + if(StringUtils.isNotEmpty(mberManageVO.getPassword())) + { + plusInfo = plusInfo + ",,," + mberManageVO.getPassword(); + } + mberCertPhoneVO.setPlusInfo(plusInfo); + + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); - AuthCertVO certVO = kmcCertCheck.authCertCheckThree(authRUrl, mberManageVO); - modelAndView.addObject("tr_cert", certVO.getTr_cert()); modelAndView.addObject("tr_url", certVO.getTr_url()); modelAndView.addObject("tr_add", certVO.getTr_add()); - + modelAndView.addObject("result", "success"); } catch (Exception e) { @@ -5386,28 +5416,16 @@ public class EgovLoginController { // 팝업에 넣을 이름과 핸드폰번호 조회 LoginVO KMCInfoVO = loginService.selectKMCInfo(loginVO); - // KMC 팝업 오픈 준비 - KmcCertChecker kmcCertCheck = new KmcCertChecker(); - String mberNm = KMCInfoVO.getMberNm(); - if ("c".equals(KMCInfoVO.getDept())) { - mberNm = KMCInfoVO.getManagerNm(); - } - String birth = KMCInfoVO.getBirth(); - String moblphonNo = KMCInfoVO.getMoblphonNo(); - String sexdstnCode = KMCInfoVO.getSexdstnCode(); - String nationality = KMCInfoVO.getNationality(); - String id = loginVO.getId(); - - // kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if (request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://219.240.88.15:8095"; - } else { - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } - - AuthCertVO certVO = kmcCertCheck.authCertCheckFour(serverNm + "/web/cop/kmc/insertIPAjax.do", mberNm, - moblphonNo, sexdstnCode, nationality, birth, id); + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/cop/kmc/insertIPAjax.do"); + mberCertPhoneVO.setName("c".equals(KMCInfoVO.getDept()) ? KMCInfoVO.getManagerNm() : KMCInfoVO.getMberNm()); + mberCertPhoneVO.setBirthDay(KMCInfoVO.getBirth()); + mberCertPhoneVO.setPhoneNo(KMCInfoVO.getMoblphonNo()); + mberCertPhoneVO.setGender(KMCInfoVO.getSexdstnCode()); + mberCertPhoneVO.setNation(KMCInfoVO.getNationality()); + mberCertPhoneVO.setPlusInfo(loginVO.getId()); + + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("tr_cert", certVO.getTr_cert()); modelAndView.addObject("tr_url", certVO.getTr_url()); @@ -6121,7 +6139,7 @@ public class EgovLoginController { modelAndView.addObject("msg", msg); return modelAndView; - } + } diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index dd47e3ed..15e097a9 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -48,6 +48,7 @@ import itn.let.cert.ip.service.CertIpService; import itn.let.cert.ip.service.CertLoginLogService; import itn.let.cert.ip.service.MberCertIpVO; import itn.let.cert.ip.service.MberCertLoginLogVO; +import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.fax.user.service.FaxGroupDataVO; import itn.let.fax.user.service.FaxService; import itn.let.kakao.user.sent.service.KakaoSentService; @@ -181,6 +182,9 @@ public class EgovMypageController { @Resource(name = "CertIpService") private CertIpService certIpService; + @Resource(name = "KmcCertChecker") + private KmcCertChecker kmcCertCheck; + /** * 마이페이지 비밀번호 변경 탭 */ @@ -1447,17 +1451,21 @@ public class EgovMypageController { // 요청페이지가 개인정보 변경 펴이지 일경우 if(userManageVO.getUserTy().equals("userInfoCh")){ //System.out.println("휴대폰 인증 ***********************************************"); - KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// //kmc 본인인증 실/개발 서버 구분 +// String serverNm = ""; +// if(request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://219.240.88.15:8095"; +// }else{ +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } - //kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if(request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://219.240.88.15:8095"; - }else{ - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/user/selectKmcMberInfoAjax.do"); + mberCertPhoneVO.setPlusInfo(loginVO.getId()); - AuthCertVO certVO = kmcCertCheck.authCertCheckFive(serverNm + "/web/user/selectKmcMberInfoAjax.do", loginVO.getId()); + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); modelAndView.addObject("certVO", certVO); } @@ -1912,18 +1920,26 @@ public class EgovMypageController { name = loginVO.getManagerNm(); } - KmcCertChecker kmcCertCheck = new KmcCertChecker(); - - //kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if(request.getServerName().contains("119.193.215.98") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://119.193.215.98:8882"; - }else{ - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// //kmc 본인인증 실/개발 서버 구분 +// String serverNm = ""; +// if(request.getServerName().contains("119.193.215.98") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://119.193.215.98:8882"; +// }else{ +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } //AuthCertVO certVO = kmcCertCheck.authCertCheckSix(serverNm + "/web/user/insertPhoneSendNumber.do", mjonMsgVO.getUserId(), mjonMsgVO.getCallFrom(), name); - AuthCertVO certVO = kmcCertCheck.authCertCheckSix(serverNm + "/web/user/selectPhoneNumberCertChkAjax.do", mjonMsgVO.getUserId(), mjonMsgVO.getCallFrom(), "", mjonMsgVO.getMyNameFlag()); + + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/user/selectPhoneNumberCertChkAjax.do"); + mberCertPhoneVO.setName(""); + mberCertPhoneVO.setPhoneNo(mjonMsgVO.getCallFrom()); + mberCertPhoneVO.setPlusInfo(mjonMsgVO.getUserId()+ "§" + mjonMsgVO.getMyNameFlag()); + + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); + modelAndView.addObject("certVO", certVO); /*}else if(mjonMsgVO.getPhmAuthType().equals("02") || mjonMsgVO.getPhmAuthType() == "02") { // ARS @@ -2923,17 +2939,21 @@ public class EgovMypageController { name = userInfo.getManagerNm(); } - KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// //kmc 본인인증 실/개발 서버 구분 +// String serverNm = ""; +// if(request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://219.240.88.15:8095"; +// }else{ +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } - //kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if(request.getServerName().contains("219.240.88.15") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://219.240.88.15:8095"; - }else{ - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/user/selectMberSecessionAjax.do"); + mberCertPhoneVO.setName(name); - AuthCertVO certVO = kmcCertCheck.authCertCheckSeven(serverNm + "/web/user/selectMberSecessionAjax.do", name); + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); model.addAttribute("certVO", certVO); return "web/user/mberSecession"; @@ -3018,18 +3038,24 @@ public class EgovMypageController { * 보안인증 본인인증 기능추가 * 20241120 원영현 과장 추가 * */ - KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// KmcCertChecker kmcCertCheck = new KmcCertChecker(); +// +// //kmc 본인인증 실/개발 서버 구분 +// String serverNm = ""; +// if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) { +// serverNm = request.getScheme() + "://192.168.0.60:8085"; +// }else{ +// serverNm = request.getScheme() + "://www.munjaon.co.kr"; +// } +// +// System.out.println("@@@ serverNm : " + serverNm); - //kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://192.168.0.60:8085"; - }else{ - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } + MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); + mberCertPhoneVO.setTrUrl("/web/user/selectSecurityAuthn.do"); + mberCertPhoneVO.setPlusInfo(loginVO.getId()); + + AuthCertVO certVO = kmcCertCheck.authCertCheck(mberCertPhoneVO, request); - System.out.println("@@@ serverNm : " + serverNm); - AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); model.addAttribute("certVO", certVO); } diff --git a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java index 3fe6f758..16c2aace 100644 --- a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java +++ b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java @@ -2,663 +2,147 @@ package itn.let.uat.uia.web; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Map; import java.util.Random; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.ui.ModelMap; import com.icert.comm.secu.IcertSecuManager; +import itn.let.cert.phone.service.CertPhoneService; +import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.uat.uia.service.AuthCertVO; import itn.let.uss.umt.service.MberManageVO; +@Component("KmcCertChecker") public class KmcCertChecker { + + @Resource(name = "CertPhoneService") + private CertPhoneService certPhoneService; //회원가입 시 인증수단을 휴대폰 본인인증만 했을 경우 사용 - public AuthCertVO authCertCheck(String trUrl) { - - AuthCertVO certVO = new AuthCertVO(); + public AuthCertVO authCertCheck( + MberCertPhoneVO mberCertPhoneVO + , HttpServletRequest request + ) { + //url 세팅 + mberCertPhoneVO = setMberCertPhoneVO(request, mberCertPhoneVO); //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); + //reqNum은 최대 40byte 까지 사용 가능 + String reqNum = getDay() + getRanNum(); //요청번호 + + String tr_cert = ""; + String cpId = "MJOM1001"; // 회원사ID + String urlCode = mberCertPhoneVO.getUrlCode(); // URL코드 + String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) + String date = getDay(); // 요청일시 + String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 + + +// String name = ""; // 성명 + String name = mberCertPhoneVO.getName(); // 성명 + String phoneNo = mberCertPhoneVO.getPhoneNo(); // 휴대폰번호 + String phoneCorp = mberCertPhoneVO.getPhoneCorp(); // 이동통신사 + if(phoneCorp == null) phoneCorp = ""; + String birthDay = mberCertPhoneVO.getBirthDay(); // 생년월일 + String gender = mberCertPhoneVO.getGender(); // 성별 + if(gender == null) gender = ""; + String nation = mberCertPhoneVO.getNation(); // 내외국인 구분 - 0:내국인, 1:외국인 + String plusInfo = mberCertPhoneVO.getPlusInfo(); // 추가DATA정보 + + + String extendVar = "0000000000000000"; // 확장변수 + //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; + String tr_url = getDomain(request) + mberCertPhoneVO.getTrUrl();// // 본인인증서비스 결과수신 POPUP URL + String tr_add = "N"; // IFrame사용여부 + + //01. 한국모바일인증(주) 암호화 모듈 선언 + IcertSecuManager seed = new IcertSecuManager(); - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } + //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) + String enc_tr_cert = ""; + tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; + enc_tr_cert = seed.getEnc(tr_cert, ""); - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001003"; // URL코드 - - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "005001"; - } - - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = ""; // 성명 - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - if(gender == null) gender = ""; - String nation = "0"; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = ""; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- + //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) + String hmacMsg = ""; + hmacMsg = seed.getMsg(enc_tr_cert); - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; + //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) + tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); + + AuthCertVO authCertVO = new AuthCertVO(); + + authCertVO.setTr_cert(tr_cert); + authCertVO.setTr_url(tr_url); + authCertVO.setTr_add(tr_add); + + return authCertVO; } - //회원가입 시 인증수단을 ARS, 휴대폰 본인인증 했을 경우 사용 - public AuthCertVO authCertCheckTwo(String trUrl, String mberNm, String moblphonNo, String sexdstnCode, String nationality, String birth) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001003"; // URL코드 - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "004001"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = mberNm; // 성명 - String phoneNo = moblphonNo; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = birth; // 생년월일 - String gender = sexdstnCode; // 성별 - if(gender == null) gender = ""; - String nation = nationality; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = ""; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; - } - //아이디 패스워드 찾기 본인인증 - public AuthCertVO authCertCheckThree(String trUrl, MberManageVO mberManageVO) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = mberManageVO.getAuthRUrlCode(); // URL 인증 코드 - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "005002"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = mberManageVO.getMberNm(); // 성명 - String phoneNo = mberManageVO.getMoblphonNo(); // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - if(gender == null) gender = ""; - String nation = "0"; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = mberManageVO.getMberId(); // 추가DATA정보 - if(StringUtils.isNotEmpty(mberManageVO.getPassword())) - { - plusInfo = plusInfo + ",,," + mberManageVO.getPassword(); - } - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; - } - - //IP 체크해주기 - public AuthCertVO authCertCheckFour(String trUrl, String mberNm, String moblphonNo, String sexdstnCode, String nationality, String birth, String id) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001006"; // URL코드 - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "005003"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = mberNm; // 성명 - String phoneNo = moblphonNo; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = birth; // 생년월일 - String gender = sexdstnCode; // 성별 - if(gender == null) gender = ""; - String nation = nationality; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = id; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; - } - - //마이페이지 휴대폰 변경 기능 본인인증에 사용 - public AuthCertVO authCertCheckFive(String trUrl, String id) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001009"; // URL코드 - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "005005"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = ""; // 성명 - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - if(gender == null) gender = ""; - String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = id; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; - } - - // 마이페이지 발신번호 관리 > 발신번호 등록 시 사용 - public AuthCertVO authCertCheckSix(String trUrl, String id, String moblphonNo, String mberNm, String myNameFlag) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001007"; // URL코드 - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "006005"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = mberNm; // 성명 - String phoneNo = moblphonNo; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - if(gender == null) gender = ""; - String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = id + "§" + myNameFlag; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; - } - - //마이패이지 회원탈퇴 > 본인인증으로 회원탈퇴에 사용 - public AuthCertVO authCertCheckSeven(String trUrl, String mberNm) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001010"; // URL코드 - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "005006"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = mberNm; // 성명 - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - if(gender == null) gender = ""; - String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = ""; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; - } - - //아이디 패스워드 찾기 본인인증 - public AuthCertVO authCertCheckEight(String trUrl, String idParam) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001012"; // URL코드 - //kmc 본인인증 실/개발 서버 구분 - if(trUrl.contains("119.193.215.98") || trUrl.contains("localhost")) { - urlCode = "005008"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = ""; // 성명 - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - if(gender == null) gender = ""; - String nation = "0"; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = idParam; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; + private String getDomain(HttpServletRequest request) { + String serverNm = request.getScheme() + "://" + request.getServerName(); + if(request.getServerPort() != 80 + && request.getServerPort() != 443) { + serverNm += ":" + request.getServerPort(); } - - - // 마이페이지 보안인증 - public AuthCertVO authCertCheckNine(String trUrl, String id) { - - AuthCertVO certVO = new AuthCertVO(); - - //kmc step 01 데이터 - //날짜 생성 - Calendar today = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - String day = sdf.format(today.getTime()); - - Random ran = new Random(); - //랜덤 문자 길이 - int numLength = 6; - String randomStr = ""; - - for (int i = 0; i < numLength; i++) { - //0 ~ 9 랜덤 숫자 생성 - randomStr += ran.nextInt(10); - } - - //reqNum은 최대 40byte 까지 사용 가능 - String reqNum = day + randomStr; //요청번호 - - String tr_cert = ""; - String cpId = "MJOM1001"; // 회원사ID - String urlCode = "001014"; // URL코드 - //kmc 본인인증 실/개발 서버 구분 - - System.out.println("@@@@@ trUrl : " + trUrl); - if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) { - urlCode = "010001"; - } - String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) - String date = day; // 요청일시 - String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 - String name = ""; // 성명 - String phoneNo = ""; // 휴대폰번호 - String phoneCorp = ""; // 이동통신사 - if(phoneCorp == null) phoneCorp = ""; - String birthDay = ""; // 생년월일 - String gender = ""; // 성별 - if(gender == null) gender = ""; - String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인 - String plusInfo = id; // 추가DATA정보 - String extendVar = "0000000000000000"; // 확장변수 - //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- - - String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL - String tr_add = "N"; // IFrame사용여부 - - //01. 한국모바일인증(주) 암호화 모듈 선언 - IcertSecuManager seed = new IcertSecuManager(); - - //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) - String enc_tr_cert = ""; - tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; - enc_tr_cert = seed.getEnc(tr_cert, ""); - - //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) - String hmacMsg = ""; - hmacMsg = seed.getMsg(enc_tr_cert); - - //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) - tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); - - certVO.setTr_cert(tr_cert); - certVO.setTr_url(tr_url); - certVO.setTr_add(tr_add); - - return certVO; + return serverNm; } + + private String getDay() { + Calendar today = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String day = sdf.format(today.getTime()); + + return day; + } + + private String getRanNum() { + Random ran = new Random(); + //랜덤 문자 길이 + int numLength = 6; + String randomStr = ""; + + for (int i = 0; i < numLength; i++) { + //0 ~ 9 랜덤 숫자 생성 + randomStr += ran.nextInt(10); + } + + return randomStr; + } + + private MberCertPhoneVO setMberCertPhoneVO( + HttpServletRequest request + , MberCertPhoneVO mberCertPhoneVO + ) { + mberCertPhoneVO.setUrl(mberCertPhoneVO.getTrUrl()); + mberCertPhoneVO.setHost(getDomain(request)); + + MberCertPhoneVO tmpMberCertPhoneVO = new MberCertPhoneVO(); + try { + tmpMberCertPhoneVO = certPhoneService.selectCertUrlCode(mberCertPhoneVO); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + + if(tmpMberCertPhoneVO != null) { + mberCertPhoneVO.setUrl(tmpMberCertPhoneVO.getUrl()); + mberCertPhoneVO.setHost(tmpMberCertPhoneVO.getHost()); + mberCertPhoneVO.setUrlCode(tmpMberCertPhoneVO.getUrlCode()); + } + + return mberCertPhoneVO; + } + + } diff --git a/src/main/resources/egovframework/egovProps/globals_dev.properties b/src/main/resources/egovframework/egovProps/globals_dev.properties index 621c1f23..c062cbaf 100644 --- a/src/main/resources/egovframework/egovProps/globals_dev.properties +++ b/src/main/resources/egovframework/egovProps/globals_dev.properties @@ -27,14 +27,11 @@ Globals.Env = dev # mysql -Globals.DriverClassName=com.mysql.jdbc.Driver -Globals.Url=jdbc:mysql://192.168.0.60:3308/mjon -Globals.UserName= mjonUr -Globals.Password= itntest123 -#Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon +Globals.DriverClassName=org.mariadb.jdbc.Driver +Globals.Url=jdbc:mariadb://192.168.0.60:3396/mjon_advc #Globals.Url=jdbc:mysql://139.150.73.12:3306/mjon -#Globals.UserName= mjonUr -#Globals.Password= mjon!@#$ +Globals.UserName= mjonUr +Globals.Password= mjon!@#$ # mysql-prod #Globals.DriverClassName=com.mysql.jdbc.Driver @@ -121,3 +118,8 @@ Globals.pay.kgm.mobile.payMode=00 #Slack Globals.slack.hooks.url=https://hooks.slack.com/services/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 Globals.slack.channel.name=\ud14c\uc2a4\ud2b8_mjon\uba54\uc2dc\uc9c0 + +#valkey +Globals.valkey.ip=192.168.0.60 +Globals.valkey.port=6379 +Globals.valkey.password=itntest123 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/globals_local.properties b/src/main/resources/egovframework/egovProps/globals_local.properties index 370b98c5..1e164a84 100644 --- a/src/main/resources/egovframework/egovProps/globals_local.properties +++ b/src/main/resources/egovframework/egovProps/globals_local.properties @@ -28,7 +28,7 @@ Globals.Env = local # mysql Globals.DriverClassName=com.mysql.jdbc.Driver -Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon +Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon_advc #Globals.Url=jdbc:mysql://192.168.0.60:3308/mjon Globals.UserName= mjonUr Globals.Password= mjon!@#$ @@ -124,3 +124,8 @@ Globals.pay.kgm.mobile.payMode=00 #Slack Globals.slack.hooks.url=https://hooks.slack.com/services/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 Globals.slack.channel.name=\ud14c\uc2a4\ud2b8_mjon\uba54\uc2dc\uc9c0 + +#valkey +Globals.valkey.ip=192.168.0.60 +Globals.valkey.port=6379 +Globals.valkey.password=itntest123 diff --git a/src/main/resources/egovframework/egovProps/globals_prod.properties b/src/main/resources/egovframework/egovProps/globals_prod.properties index 185aadd6..68ca97df 100644 --- a/src/main/resources/egovframework/egovProps/globals_prod.properties +++ b/src/main/resources/egovframework/egovProps/globals_prod.properties @@ -105,4 +105,9 @@ Globals.pay.kgm.mobile.payMode=10 #Slack Globals.slack.hooks.url=https://hooks.slack.com/services/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 -Globals.slack.channel.name=mjon\uba54\uc2dc\uc9c0 \ No newline at end of file +Globals.slack.channel.name=mjon\uba54\uc2dc\uc9c0 + +#valkey +Globals.valkey.ip=10.12.107.9 +Globals.valkey.port=6379 +Globals.valkey.password=itntest123 \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml index a5e5ed0c..ff0a37cd 100644 --- a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml @@ -6,7 +6,7 @@ - + + + + + + + insert into mj_cert_log + ( + MBER_ID + , CERT_DATE + , CERT_TYPE + , CERT_IPADDR + , REGDATE + ) + values ( + #mberId# + , #certDate# + , #certType# + , #certIpaddr# + , now() + ); + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp index c78cfbb3..90887669 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/AddrGroupListAjax.jsp @@ -633,7 +633,9 @@ function listAddrTransHistAjax(pageNo) { var KMCIS_window; - function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ diff --git a/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp index ca464047..9072a7b0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/mberSecession.jsp @@ -12,7 +12,9 @@ window.name = "kmcis_web_sample"; var KMCIS_window; //휴대폰 인증팝업 열기 -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp index 09a4c63c..d0de8555 100644 --- a/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/fax/addr/FaxAddrGroupListAjax.jsp @@ -548,7 +548,9 @@ function listAddrTransHistAjax(pageNo) { var KMCIS_window; - function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ diff --git a/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp b/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp index 128427bf..f4e2265e 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/findUserId.jsp @@ -622,7 +622,9 @@ function fnAddUserView() { var KMCIS_window; - function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ diff --git a/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp b/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp index 3acf61e6..020d8983 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/humanPageAuthenticatedPage.jsp @@ -60,7 +60,9 @@ function humanAuthenticated(){ }); } -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp b/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp index ceafd805..5e8c9229 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/test_usrCheckTerms.jsp @@ -373,7 +373,9 @@ var KMCIS_window; - function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ diff --git a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp index 83c79e43..0e17e4ed 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms.jsp @@ -310,30 +310,7 @@ return false; } - //KMC팝업에 정보 미리 삽입 - var kmcPopUpForm = $("form[name=kmcPopUpForm]").serialize() ; - $.ajax({ - url : "", - type : 'POST', - data : kmcPopUpForm, - dataType:'json', - success : function(returnData, status){ - if(status == "success") { - $("#tr_cert").val(returnData.tr_cert); - $("#tr_url").val(returnData.tr_url); - $("#tr_add").val(returnData.tr_add); - - openKMCISWindow(); - - - }else{ alert("실패");return;} - }, - - error : function(request , status, error){ - alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); - } - }); - + openKMCISWindow(); } @@ -384,7 +361,9 @@ var KMCIS_window; - function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ @@ -419,7 +398,6 @@ } -
          @@ -652,7 +630,7 @@
          -
          +< @@ -773,4 +751,5 @@
          + diff --git a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp index db1aa50f..4fde2d3c 100644 --- a/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/login/usrCheckTerms_back2.jsp @@ -476,7 +476,9 @@ var KMCIS_window; - function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp index a560cbd1..bed33f22 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberCompanyInfoChange.jsp @@ -194,7 +194,9 @@ window.name = "kmcis_web_sample"; var KMCIS_window; -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp index 6e1ac69d..1a9a69e9 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoChange.jsp @@ -102,7 +102,9 @@ window.name = "kmcis_web_sample"; var KMCIS_window; -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp index 4db78d99..dcebcd6c 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp @@ -267,7 +267,9 @@ function getMberGrdChk() { window.name = "kmcis_web_sample"; var KMCIS_window; //휴대폰 인증팝업 열기 -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp index e023f648..532579b6 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecession.jsp @@ -9,7 +9,9 @@ window.name = "kmcis_web_sample"; var KMCIS_window; //휴대폰 인증팝업 열기 -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp index 4b8943b4..b39f8cd7 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -626,7 +626,9 @@ function deleteRow(p_ip){ window.name = "kmcis_web_sample"; var KMCIS_window; //휴대폰 인증팝업 열기 -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp index f3569e8d..6483f195 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManageRegister.jsp @@ -394,7 +394,9 @@ function kmcCertCheck(){ window.name = "kmcis_web_sample"; var KMCIS_window; //휴대폰 인증팝업 열기 -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp index d3ebebe8..95439b24 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/sendNumberManage_bak220502.jsp @@ -122,7 +122,9 @@ function selectSendNumberAjax(phmAuthType){ window.name = "kmcis_web_sample"; var KMCIS_window; //휴대폰 인증팝업 열기 -function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ // 모바일일 경우 (변동사항 있을경우 추가 필요) diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 802ac6f4..7d863572 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -69,7 +69,15 @@ /* - + + + springSessionRepositoryFilter + org.springframework.web.filter.DelegatingFilterProxy + + + springSessionRepositoryFilter + /* + diff --git a/src/main/webapp/publish/js/common.js b/src/main/webapp/publish/js/common.js index c27d4537..e21312c0 100644 --- a/src/main/webapp/publish/js/common.js +++ b/src/main/webapp/publish/js/common.js @@ -133,3 +133,21 @@ var isInternetExplorer = false; if( navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1 || (cCommonUserAgent.indexOf("msie") != -1)) { isInternetExplorer = true; } + + + +function certAccessLog(){ + $.ajax({ + url : '/web/cert/log/insertCertLog.do', + type : 'POST', + /* data : arsForm, */ + dataType:'json', + success : function(returnData, status){ + if(status == "success") { + }else{ console.log('본인인증 시도로그 실패');} + }, + error : function(request , status, error){ + console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error); + } + }); +} \ No newline at end of file diff --git a/src/main/webapp/publish/kmc/kmcis_web_sample_step02.jsp b/src/main/webapp/publish/kmc/kmcis_web_sample_step02.jsp index f0105988..bfb40e06 100644 --- a/src/main/webapp/publish/kmc/kmcis_web_sample_step02.jsp +++ b/src/main/webapp/publish/kmc/kmcis_web_sample_step02.jsp @@ -232,7 +232,9 @@ var KMCIS_window; - function openKMCISWindow(){ + function openKMCISWindow(){ + //본인인증시도 로그 + certAccessLog(); var UserAgent = navigator.userAgent; /* 모바일 접근 체크*/ From 0ef50856df4c53e523f3f793aeef9f2cd2c0c237 Mon Sep 17 00:00:00 2001 From: ijunho Date: Mon, 21 Jul 2025 11:35:53 +0900 Subject: [PATCH 5/9] =?UTF-8?q?/publish/js/common.js=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=BA=90=EC=8B=9C=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/WEB-INF/jsp/layout/include/defaultResource.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/WEB-INF/jsp/layout/include/defaultResource.jsp b/src/main/webapp/WEB-INF/jsp/layout/include/defaultResource.jsp index 0e9cabe4..4e807072 100644 --- a/src/main/webapp/WEB-INF/jsp/layout/include/defaultResource.jsp +++ b/src/main/webapp/WEB-INF/jsp/layout/include/defaultResource.jsp @@ -38,7 +38,7 @@ - + From 936c71b5ed2be669c3a30dfb06b167a20bc212bc Mon Sep 17 00:00:00 2001 From: ijunho Date: Tue, 22 Jul 2025 14:03:02 +0900 Subject: [PATCH 6/9] =?UTF-8?q?=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EB=B3=B8=EC=9D=B8=20=EB=AA=85=EC=9D=98=20=ED=9C=B4?= =?UTF-8?q?=EB=8C=80=ED=8F=B0=EB=A7=8C=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20off=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/uat/uia/web/EgovMypageController.java | 21 +++++++++++++------ .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 17 +++++++++++---- .../jsp/web/user/securityAuthnPage.jsp | 5 +++-- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 15e097a9..997caab0 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -3906,20 +3906,29 @@ public class EgovMypageController { + //본인 명의만 번호 변경 가능하게 + if(mblDn.equals(DI)) { + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setSecuLoginFlag("N"); + mberManageVO.setMberId(userId); + mberManageVO.setLastUpdusrId(userId); + mberManageService.updateSecureLoginFlag(mberManageVO); + + model.addAttribute("msg", "변경이 완료되었습니다."); + }else { + model.addAttribute("msg", "가입자 본인 명의의 휴대폰으로만 해제가 가능합니다."); + } return "web/user/securityAuthnPage"; } @RequestMapping(value="/web/user/mberSecureLoginAjax.do") - public ResponseEntity mberSecureLoginAjax(MberManageVO mberManageVO, @RequestBody Map params){ + public ResponseEntity mberSecureLoginAjax(MberManageVO mberManageVO){ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); - if("Y".equals(params.get("secuLoginFlag"))) { - mberManageVO.setSecuLoginFlag("N"); - }else { - mberManageVO.setSecuLoginFlag("Y"); - } + mberManageVO.setSecuLoginFlag("Y"); mberManageVO.setMberId(userId); mberManageVO.setLastUpdusrId(userId); diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp index b39f8cd7..86677aef 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -70,7 +70,7 @@ $(document).ready(function(){ } else { $(this).find("a.on").removeClass("on").siblings("a").addClass("on"); $(this).removeClass("off").addClass("on"); - callTo() + callTo(); } } @@ -655,10 +655,10 @@ function callTo() { $.ajax({ url: '/web/user/mberSecureLoginAjax.do', type: 'POST', - contentType: 'application/json', - data: JSON.stringify({ + /*contentType: 'application/json', + data: JSON.stringify({ secuLoginFlag: '${mberManageVO.secuLoginFlag}' - }), + }), */ success: function(response) { if(response === 'success'){ alert('변경이 완료되었습니다.'); @@ -675,6 +675,15 @@ function callTo() { }); } +//자식창에서 호출 +function callToTwo(msg, winRef) { + if (winRef) { + winRef.close(); + } + alert(msg); + localtion.reload(); +} + function fn_phonePopClean(){ console.log('ddd') diff --git a/src/main/webapp/WEB-INF/jsp/web/user/securityAuthnPage.jsp b/src/main/webapp/WEB-INF/jsp/web/user/securityAuthnPage.jsp index ccc2e722..17aecd39 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/securityAuthnPage.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/securityAuthnPage.jsp @@ -20,8 +20,9 @@ From 925b38192ba5e65e442a1b09cea0dcd2163e9857 Mon Sep 17 00:00:00 2001 From: subsub Date: Tue, 22 Jul 2025 14:37:10 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=EA=B2=B0=EC=A0=9C=EA=B4=80=EB=A6=AC=20>=20?= =?UTF-8?q?=EC=9A=94=EA=B8=88=20=EC=82=AC=EC=9A=A9=EB=82=B4=EC=97=AD=20>?= =?UTF-8?q?=20=EC=95=8C=EB=A6=BC=ED=86=A1=20=EC=83=81=EC=84=B8=EB=82=B4?= =?UTF-8?q?=EC=97=AD=20=ED=8C=9D=EC=97=85=20=EB=A7=88=EC=8A=A4=ED=81=AC=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95=20=ED=8C=9D=EC=97=85=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp | 4 ++-- src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp | 10 +++++----- .../webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp index 9e5eee73..c79bc2e8 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailPopAjax.jsp @@ -7,7 +7,7 @@
          -
          +
          • @@ -18,7 +18,7 @@ -
            +

            diff --git a/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp b/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp index 1be55030..73b8b384 100644 --- a/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp @@ -196,11 +196,11 @@ function fnRevDetailPop03(msgGroupId){
            - diff --git a/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp b/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp index 2b071585..a1eda9c8 100644 --- a/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp @@ -210,7 +210,7 @@ function fnShowPdfPrintPopup(){ - +
            " /> " /> From 03c992be60ec3e807f8821a7486cdc312c611f0c Mon Sep 17 00:00:00 2001 From: kmg Date: Tue, 22 Jul 2025 16:31:03 +0900 Subject: [PATCH 8/9] =?UTF-8?q?2025/07/22=202025=20=EC=9D=B4=EC=9A=A9?= =?UTF-8?q?=EC=95=BD=EA=B4=80=20=EA=B0=9C=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/publish/css/content.css | 10 + .../publish/email_form_terms_2025_clause.html | 113 ++++ src/main/webapp/publish/guide.html | 3 + src/main/webapp/publish/service1_2025.html | 508 ++++++++++++++++++ 4 files changed, 634 insertions(+) create mode 100644 src/main/webapp/publish/email_form_terms_2025_clause.html create mode 100644 src/main/webapp/publish/service1_2025.html diff --git a/src/main/webapp/publish/css/content.css b/src/main/webapp/publish/css/content.css index ee304cf7..a662d0ce 100644 --- a/src/main/webapp/publish/css/content.css +++ b/src/main/webapp/publish/css/content.css @@ -2395,6 +2395,16 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .clause_new ul.conlist7 li::before {content:"제"; font-weight:500;font-size: 18px;position: absolute; left: 0;} .clause_new ul.conlist7 li strong {font-weight:500; font-size:18px; padding:0 7px 0 0;} .clause_new ul.conlist7 li .gray_box{background-color:#f5f5f5; border-radius: 5px; padding:25px 35px; margin:18px 0; font-size:16px; font-weight:400;} +.clause_new ul.conlist7 li .tType2{width: 100%; border-top: 1px solid #000; text-align: center; margin:10px 0 10px 0;} +.clause_new ul.conlist7 li .tType2 thead tr{background-color: #f7f7f7; border-bottom: 1px solid #e5e5e5;} +.clause_new ul.conlist7 li .tType2 thead tr th{height: 46px; font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; vertical-align: middle;} +.clause_new ul.conlist7 li .tType2 thead tr th:last-child{border-right: 0;} +.clause_new ul.conlist7 li .tType2 tbody tr{border-bottom: 1px solid #e5e5e5;} +.clause_new ul.conlist7 li .tType2 tbody tr th{font-size: 16px; font-weight: 500; border-right: 1px solid #e5e5e5; height: 50px; vertical-align: middle;} +.clause_new ul.conlist7 li .tType2 tbody tr td{font-size: 16px; font-weight: 300; border-right: 1px solid #e5e5e5; vertical-align: middle; line-height: 1.4; padding:10px 20px;} +.clause_new ul.conlist7 li .tType2 tbody tr td.type_left {text-align: left;} +.clause_new ul.conlist7 li .tType2 tbody tr td:last-child{border-right: 0;} +.clause_new ul.conlist7 li .tType2 tbody tr td:last-child>span {font-weight: 400;} .clause_new .history { border-top:1px solid #d5d5d5; padding:30px 0 10px 17px; margin:10px 0 0 0;} .clause_new .history p {font-size:16px; font-weight: 500;} .clause_new ol.conlist8 {padding:0 0 0 10px;} diff --git a/src/main/webapp/publish/email_form_terms_2025_clause.html b/src/main/webapp/publish/email_form_terms_2025_clause.html new file mode 100644 index 00000000..50809c67 --- /dev/null +++ b/src/main/webapp/publish/email_form_terms_2025_clause.html @@ -0,0 +1,113 @@ + + + + + + + + 이용약관 개정 안내 메일입니다. + + + + + + +
            +
            +
            + + +
            +
            +

            + [문자온] 이용약관 개정안내

            +

            + 안녕하세요. 대량 ‧ 단체 문자사이트 “문자온(www.munjaon.co.kr)”입니다.
            변함없이 문자온 서비스를 이용해 주시는 고객님께 감사의 말씀을 드리며 이용약관이 다음과 같이 변경됨을 알려드리오니 + 서비스 이용에 참고하시기 바랍니다.

            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            구분주요내용
            개정사유이용자보호를 위한 서비스 이용약관 일부 개정 + +
            개정사항 +

            - 이용자 불만형태별 처리절차 및 처리기간 명시

            +

            - 서비스 제공이 불가능한 경우(휴 ·폐업 시)의 처리 방안 명시

            +
            + 개정되는 약관 전체 내용은 하단의 링크 또는 홈페이지 공지사항을 통하여
            확인해 주시기 바랍니다.
            + +
            +
            시행일2025.07.30(수) +
            + + + + + + +
            +

            + 이의제기 관련 사항 +이용약관 시행일 전까지 별도의 이의제기를 하지 않는 경우 본 이용약관에 동의하는 것으로 간주됩니다. 개정되는 이용약관에 동의하지 않으시는 경우 회원탈퇴(이용계약의 해지)를 요청하실 수 있습니다. 이용약관 개정과 관련하여 궁금하신 사항은 문자온 고객센터로 문의하여 주시기 바랍니다. + +

            +
            + + + + + +

            + 문자온은 앞으로도 회원 여러분께 더욱 신뢰받는 서비스로 보답할 수 있도록
            최선의 노력을 다하겠습니다.
            감사합니다. +

            + + +
            +

            + 본 메일은 발신전용이며, 문의에 대한 회신은 처리되지 않습니다. 문자온 관련하여 궁금하신 점이나
            불편한 사항은 고객센터를 통해 문의하여 주시기 바랍니다.

            +

            + 주소 : (12248) 경기도 남양주시 다산순환로 20, A동 735호(다산동, 현대프리미어캠퍼스)
            사업자 번호 : 653-87-00858 | 대표 : 유인식 | 통신판매등록번호 : + 제2021-다산-0422호
            문의전화 : 1551-8011 | E-mail : help@iten.co.kr

            +

            + Copyright 2022 ⓒ MUNJAON co. Ltd, All rights reserved.

            +
            +
            +
            +
            + + + \ No newline at end of file diff --git a/src/main/webapp/publish/guide.html b/src/main/webapp/publish/guide.html index 5d955b3f..542ab4d1 100644 --- a/src/main/webapp/publish/guide.html +++ b/src/main/webapp/publish/guide.html @@ -152,6 +152,8 @@
          • service1.html고객센터 > 공지사항
          • service2.html고객센터 > 이용약관
          • +
          • └ service1_2024.html고객센터 > 이용약관 (2024)
          • +
          • └ service1_2025.html고객센터 > 이용약관 (2025)
          • service3.html고객센터 > 자주하는 질문
          • service4.html고객센터 > 1:1 문의
          • service4_2.html고객센터 > 1:1 문의 > 등록
          • @@ -220,6 +222,7 @@
          • email_form_terms.html서비스 이용약관 개정
          • email_form_terms_2024_clause.html서비스 이용약관 개정
          • email_form_terms_2024_privacy.html개인정보처리방침 개정
          • +
          • email_form_terms_2025_clause.html서비스 이용약관 개정
          diff --git a/src/main/webapp/publish/service1_2025.html b/src/main/webapp/publish/service1_2025.html new file mode 100644 index 00000000..cb2792a5 --- /dev/null +++ b/src/main/webapp/publish/service1_2025.html @@ -0,0 +1,508 @@ + + + + + + + 문자온 + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + + + +
          + + + +
          +
          + +
          + +
            +
          • +
          • +
          • +
          • +
          • +
          + + +
          +
          +

          이용안내

          +
          +
          + +
            +
          • +
          • +
          • +
          + +
          + + +
          +
          +

          제1장 총칙

          +
            +
          • 1조(목적)이 약관은 주식회사 아이티앤(이하 “회사”라 한다)이 제공하는 인터넷 서비스 문자온(www.munjaon.co.kr, 이하 “서비스”라 한다)을 이용함에 있어 회사와 이용자의 권리, 의무, 책임사항 및 기타 필요한 사항을 규정함을 목적으로 합니다.
          • +
          • 2조(용어의 정의)이 약관에서 사용하는 용어의 정의는 다음과 같습니다.
            +
              +
            1. 1. 문자온(문자ON) : 회사의 서비스명으로 이용자가 전송하고자 하는 내용ㆍ정보 등을 문자메시지, 멀티미디어메시지, 카카오톡을 통한 알림톡 또는 친구톡, 팩스 등 다양한 메시지 형태로 변화시켜 전송하는 서비스
            2. +
            3. 2. 이용자 : 회사에 개인정보를 제공하여 이용계약을 체결하고, 이용자 아이디(ID)를 부여받은 자로서 회사가 제공하는 서비스를 지속적으로 이용할 수 있는 자
            4. +
            5. 3. 아이디(ID) : 이용자의 식별과 서비스 이용을 위하여 이용자가 정하고 회사가 승인하는 문자와 숫자의 조합
            6. +
            7. 4. 비밀번호 : 이용자가 부여 받은 아이디(ID)와 일치된 이용자임을 확인하고, 이용자의 비밀을 보호하기 위해 이용자가 설정한 문자와 숫자의 조합
            8. +
            9. 5. 휴면아이디 : 12개월 이상 계속해서 로그인을 포함한 서비스 이용이 없는 아이디
            10. +
            11. 6. 해지 : 회사와 이용자 간 맺은 이용계약을 해약하는 것
            12. +
            13. 7. 문자메시지 : 정보통신망을 통해 수신자에게 발송되는 메시지(이하 “메시지”라 한다)
            14. +
            15. 8. 스팸메시지 : 정보통신망을 통해 수신자의 명시적인 사전 동의 없이 일방적으로 전송 또는 게시되는 영리목적의 광고성 정보
            16. +
            17. 9. 불법스팸메시지 : 「정보통신망 이용촉진 및 정보보호 등에 관한 법률(이하 “정보통신망법”이라 한다)」 제50조부터 제50조의8을 위반하여 전송 또는 게시되는 영리목적의 광고성 정보
            18. +
            19. 10. 문자피싱메시지 : 전자금융사기를 목적으로 전송 또는 게시되는 정보
            20. +
            21. 11. 스미싱메시지 : 메시지 내용 중 인터넷 주소를 클릭하면 악성코드가 설치되어 수신자가 모르는 사이에 금전적 피해 또는 개인ㆍ금융정보 탈취 피해를 야기하는 메시지
            22. +
            23. 12. 불법정보 : 「정보통신망법」 제44조의7에 따라 정보통신망을 통한 유통을 금지하는 음란물, 명예훼손, 사이버스토킹, 해킹ㆍ바이러스, 청소년 유해물 표시위반, 도박ㆍ사해행위, 개인정보거래, 총포 등 불법제조, 국가안보 위반, 기타 그 밖에 범죄를 목적으로 하거나 교사 또는 방조하는 내용의 정보
            24. +
            25. 13. 카카오톡 : 주식회사 카카오(이하 “카카오”)가 운영하는 모바일 메신저 기반의 실시간 커뮤니케이션 서비스로 알림톡, 친구톡 또는 해당 서비스를 제공하는 어플리케이션
            26. +
            27. 14. 알림톡 : 주문, 예약, 결제, 배송 정보 등 「정보통신망법」 및 한국인터넷진흥원 지침상 광고성 정보의 예외로 분류되는 정보 중 일부를 카카오톡 채널 추가 여부와 상관 없이 발송 가능한 메시지
            28. +
            29. 15. 친구톡 : 발신자의 카카오톡 채널과 채널 추가된 카카오톡 이용자에게만 발송 가능한 메시지
            30. +
            31. 16. 카카오톡 채널 : 카카오의 공식 계정 서비스 중 하나로서 기업 및 단체가 카카오톡 이용자와 커뮤니케이션 할 수 있는 서비스
            32. +
            33. 17. 발신 프로필(채널ID) : 카카오톡 채널 개설을 통해 확보한 알림톡 또는 친구톡을 발송하는 주체에 대한 식별정보
            34. +
            35. 18. 전송자격 인증제 : 「전기통신사업법」 제2조제14호나목의 특수한 유형의 부가통신역무를 제공하는 사업자가 영리 목적의 광고성 정보를 발송하는 경우 사전에 문자중계사 또는 인증업무를 위탁받은 운영기관이 심사를 통해 인증을 부여하는 제도
            36. +
            +
          • +
          • 3조(약관의 게시와 개정)① 회사는 이 약관의 내용을 서비스 화면에 이용자가 확인하기 쉽게 게시하며, 이용자가 이에 동의함으로써 그 효력이 발생합니다.
            + ② 회사는 「약관의 규제에 관한 법률」, 「정보통신망법」, 「전자문서 및 전자거래 기본법」, 「전자상거래 등에서의 소비자보호에 관한 법률(이하 “전자상거래법”이라 한다」 등 관련 법을 위배하지 않는 범위에서 이 약관을 개정할 수 있습니다.
            + ③ 회사가 이 약관을 개정하는 경우에는 적용일자 및 개정사유를 명시하여 현행약관과 함께 제1항의 방식에 따라 그 적용일자 7일 전부터 적용일자 전까지 공지합니다. 다만, 이용자의 권리 또는 의무에 관한 중요한 규정의 변경은 최소한 30일 전에 공지하고 일정기간 서비스 내 공지사항, 전자우편 등의 전자적 수단을 통해 이를 통지하도록 합니다. +
            + ④ 회사가 제3항에 따라 개정약관을 공지 또는 통지하면서 이용자에게 약관 변경 적용일까지 거부의사를 표시하지 않으면 동의한 것으로 본다는 뜻을 명확하게 공지 또는 통지하였음에도 이용자가 명시적으로 거부의 의사표시를 하지 아니한 경우에는 개정약관에 동의한 것으로 봅니다.
            + ⑤ 이용자는 개정약관에 동의하지 않는 경우 서비스 이용을 중단하고 이용계약을 해지할 수 있습니다.
            + ⑥ 새로운 서비스가 개설될 경우 별도의 명시된 설명이 없는 한 이 약관에 따라 제공됩니다.
            + ⑦ 이용자는 약관의 변경에 대하여 주의의무를 다하여야 하며, 변경된 약관으로 인한 이용자의 피해는 회사에서 책임지지 않습니다.
            + ⑧ 이 약관의 적용기간은 이용자의 가입일부터 해지일까지로 합니다. 단, 채권 또는 채무관계가 있을 경우에는 채권, 채무의 완료일까지로 규정합니다. +
          • +
          • 4조(약관 외 준칙)① 이 약관은 회사가 제공하는 서비스에 관하여 별도의 정책 및 운영규칙과 함께 적용됩니다.
            + ② 이 약관에서 정하지 아니한 사항 및 해석에 관하여는 관계법령 또는 상관례에 따릅니다. +
          • +
          +

          제2장 서비스 이용계약 및 관리

          +
            +
          • 5조(서비스 이용계약)① 서비스 이용계약은 이용자가 되고자 하는 자가 이 약관을 읽고 약관에 동의를 한 다음 회사가 정한 소정의 양식에 따라 회원가입을 신청하며, 회사는 특별한 하자가 없는 한 접수의 순서대로 등록신청을 승낙하는 것을 원칙으로 합니다. 단, 회사는 다음 각 호의 어느 하나에 해당하는 경우에는 승낙을 하지 않거나 추후에 이용계약을 해지할 수 있습니다. +
            +
              +
            1. 1. 실명이 아니거나 타인의 명의를 이용하여 신청한 경우
            2. +
            3. 2. 서비스 이용계약 신청서의 내용을 허위로 기재하여 신청한 경우
            4. +
            5. 3. 만 18세 미만의 가입자인 경우
            6. +
            7. 4. 가입신청자가 이 약관에 의하여 과거에 회원 자격을 상실한 적이 있는 경우(단, 회사의 회원 재가입 승낙을 받은 경우에는 예외로 함)
            8. +
            9. 5. 이용자의 귀책사유로 인하여 승인이 불가능한 경우
            10. +
            11. 6. 이용자가 서비스의 정상적인 제공을 저해하거나 다른 이용자의 서비스 이용에 지장을 줄 것으로 예상되는 경우
            12. +
            13. 7. 부정한 용도로 서비스를 이용할 것으로 예상되는 경우
            14. +
            15. 8. 사회의 안녕과 질서 혹은 미풍양속에 반할 우려가 있다고 회사가 인정하는 경우
            16. +
            17. 9. 기타 회사가 정한 서비스 이용계약 등록신청 요건에 부합하지 않는 경우
            18. +
            + ② 온라인 등록신청 양식에 기재 또는 첨부하는 모든 정보는 진실된 것으로 간주하며, 거짓된 정보를 기재하는 경우 서비스 이용에 제한을 받을 수 있습니다.
            + ③ 이용자는 반드시 이용자 본인의 실명과 휴대폰 번호를 기재하여야 하며, 실명으로 등록하지 않은 경우 서비스 이용에 제한을 받게 됩니다.
            + ④ 회사는 서비스 관련 설비에 여유가 없거나 기술상 또는 업무상 문제가 있는 경우 등에는 승낙을 유보할 수 있습니다.
            + ⑤ 서비스 이용계약의 성립시기는 회사가 가입완료를 신청절차 상에서 표시한 시점으로 합니다.
            + ⑥ 회사는 이용자에 대하여 회사정책에 따라 등급별로 구분하여 이용시간, 이용횟수, 서비스 메뉴 등을 세분화하여 이용에 차등을 둘 수 있습니다.
            + ⑦ 회사는 서비스의 대량이용 등 특별한 이용에 관하여는 별도 계약을 통해 제공할 수 있습니다.
            + ⑧ 회사는 전송자격인증제에 따른 전송자격 인증을 받지 않거나, 인증이 취소된 사업자와는 거래를 하지 아니할 수 있습니다. +
          • +
          • 6조(개인정보의 처리)① 회사는 관계 법령이 정하는 바에 따라 적법하고 공정한 수단에 의하여 이용계약의 성립 및 이행에 필요한 최소한의 개인정보를 수집하고, 이용자의 개인정보를 보호하기 위해 노력합니다.
            + ② 제1항에도 불구하고, 이용자가 게시판 등 온라인 상에서 자발적으로 제공하는 개인정보는 다른 사람이 수집하여 사용할 가능성이 있으므로 이러한 위험은 이용자 자신이 책임을 집니다.
            + ③ 회사는 개인정보의 수집 시 관계 법령에 따라 「개인정보처리방침」에 그 수집범위 및 목적을 사전에 고지합니다.
            + ④ 회사는 회사가 제공하는 서비스를 이용하는 이용자를 대상으로 해당 서비스의 양적ㆍ질적 향상을 위해 이용자의 개인 식별이 가능한 개인정보를 이용자의 동의를 받아 수집하여 회사의 각종 서비스 등에 사용할 수 있습니다.
            + ⑤ 회사는 서비스 제공과 관련하여 알고 있는 이용자의 개인정보를 본인의 승낙 없이 제3자에게 누설 및 배포하지 않습니다. 다만, 관계 법령에 의한 관계기관으로부터의 요청 등 법률의 규정에 따른 적법한 절차에 의한 경우에는 그러하지 않습니다.
            + ⑥ 개인정보의 보호 및 이용에 관하여는 관계 법령 및 회사의 「개인정보처리방침」이 적용됩니다. 단, 회사의 공식 사이트 이외 링크된 사이트에 대하여는 회사의 개인정보처리방침이 적용되지 않습니다.
            + ⑦ 회사는 이용자의 시스템에 스파이웨어 등 기타 바이러스의 감염 등으로 인한 개인정보유출에 대해서는 책임을 지지 않으며, 이용자는 주기적으로 자신의 사용 시스템의 사용 여부를 관리할 책임을 가지고 있습니다. +
          • +
          • 7조(아이디 및 비밀번호 관리에 대한 의무)① 이용자는 아이디와 비밀번호에 관한 관리책임을 지며, 이를 제3자가 이용하도록 하여서는 안됩니다.
            + ② 회사는 이용자의 아이디가 다음 각 호의 어느 하나에 해당하는 경우에는 해당 아이디의 활용을 제한할 수 있습니다.
            +
              +
            1. 1. 개인정보 유출 우려가 있는 경우
            2. +
            3. 2. 반사회적 또는 미풍양속에 어긋나는 경우
            4. +
            5. 3. 회사 및 회사의 운영자로 오인할 우려가 있는 경우
            6. +
            + ③ 이용자는 아이디 및 비밀번호가 도용되거나 제3자가 사용하고 있음을 인지한 경우에는 이를 즉시 회사에 통지하고 회사의 안내에 따라야 합니다.
            + ④ 회사는 이용자가 제3항에 따른 통지를 하지 않거나, 통지를 한 이후 회사의 안내에 따르지 않아 발생한 불이익에 대하여 책임지지 않습니다.
            + ⑤ 회사는 보안 강화를 위해, 신규 가입한 이용자 또는 마지막 로그인 시점으로부터 3개월간 로그인하지 않은 이용자의 부정로그인을 방지하는 보안 로그인 기능(이용자가 사전에 등록한 휴대폰 번호에 대한 점유 인증이 완료된 경우에만 서비스 홈페이지 로그인이 가능하도록 하는 기능)을 이용자의 기본 로그인 방식으로 설정할 수 있습니다.
            + ⑥ 이용자가 제5항에 따른 보안 로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임을 지지 않습니다. +
          • +
          • 8조(이용자정보의 변경)이용자는 이용 신청 시 기재한 이용자정보가 변경되었을 경우 즉시 온라인으로 직접 수정하여야 하며, 관리자에게도 수정을 요청할 수 있습니다. 만약, 이용자가 이용자정보를 변경하지 않아 발생하는 문제에 대하여는 회사가 책임지지 않습니다. +
          • +
          • 9조(이용자에 대한 통지)① 회사가 이용자에 대한 통지를 하는 경우, 이 약관에서 별도로 정함이 없는 한 이용자가 등록한 이메일, 휴대전화, 문자메시지 등을 통해 통지할 수 있습니다. 단, 이용자가 해당 정보를 허위로 제출하거나 변경된 정보를 회사에 알리지 않은 경우에는, 이용자가 사전 제출한 정보로 통지를 발송한 때에 도달된 것으로 봅니다.
            + ② 회사는 전체 또는 불특정 다수 이용자에 대한 통지의 경우 7일 이상 서비스에 게시함으로써 제1항의 개별 통지에 갈음할 수 있습니다. +
          • +
          +

          제3장 회사 및 이용자의 의무

          +
            +
          • 10조(회사의 의무)① 회사는 관계 법령과 이 약관이 금지하는 행위를 하지 않으며, 지속적이고 안정적인 서비스를 제공하기 위해 최선의 노력을 다하여야 합니다.
            + ② 회사는 이용자가 안전하게 서비스를 이용할 수 있도록 개인정보(신용정보 포함) 보호 및 관리를 위해 필요한 조치를 취하며 「개인정보처리방침」을 공시하고 준수합니다.
            + ③ 회사는 서비스 제공목적에 맞는 서비스 이용 여부를 확인하기 위하여 상시적으로 모니터링을 실시합니다.
            + ④ 회사는 이용자에게 제공하는 유료 및 무료 서비스를 계속적이고 안정적으로 제공하기 위하여 설비에 장애가 생기거나 멸실 되었을 때 지체없이 이를 수리 또는 복구합니다. 다만, 천재지변이나 비상사태 등 부득이한 경우에는 서비스를 일시 중단하거나 영구 중지할 수 있습니다.
            + ⑤ 회사는 이용자의 회원가입 시 타인의 명의를 도용한 부정가입을 방지하기 위해 본인인증 서비스 사업자가 제공하는 인증방법을 통해 실명확인 및 본인인증을 요청합니다.
            + ⑥ 회사는 이용자가 본인인증 절차를 거치고 발신번호를 사전등록한 후 서비스를 제공합니다.
            + ⑦ 회사는 다음 각 호의 어느 하나에 해당하는 경우, 해당 서비스의 제공을 거부하는 조치를 취할 수 있으며, 이 경우 해당 조치 사실을 서비스를 제공받는 이용자 등 이해관계인에게 알립니다. 다만, 미리 알리는 것이 곤란한 경우에는 선 거부조치 후 이를 지체 없이 알려야 합니다.
            +
              +
            1. 1. 광고성 정보의 전송 또는 수신으로 서비스의 제공에 장애가 일어나거나 일어날 우려가 있는 경우
            2. +
            3. 2. 수신자가 광고성 정보의 수신을 원하지 않는 경우
            4. +
            + ⑧ 회사는 스팸메시지, 불법스팸메시지, 문자피싱메시지, 스미싱메시지(이하 “불법스팸”이라 한다)로부터 이용자 및 수신자를 보호하기 위하여 스팸차단(필터링)서비스를 통해 해당 메시지가 수신되지 않도록 사전 차단할 수 있습니다.
            + ⑨ 회사는 불법스팸, 불법정보, 발신번호조작 등으로 인지되는 메시지에 대해서 발송을 차단하거나 제한 할 수 있습니다.
            + ⑩ 회사는 이용자가 불법스팸을 전송한 사실을 확인한 경우, 한국인터넷진흥원 불법스팸대응센터 등 관계기관에 관련 자료를 첨부하여 신고할 수 있습니다.
            + ⑪ 회사는 이용자 중 문자재판매사업자에 대하여 전송자격인증제에 따라 인증이 취소된 사실을 전달받은 경우 문자재판사업자의 서비스 정지, 계약 해지 등의 조치를 취할 수 있습니다. +
          • +
          +
            +
          • 11조(이용자의 의무)① 이용자는 다음 각 호의 어느 하나에 해당하는 행위를 하여서는 안 됩니다.
            +
              +
            1. 1. 신청 또는 변경 시 허위내용을 등록하는 행위
            2. +
            3. 2. 타인의 정보를 도용하는 행위
            4. +
            5. 3. 회사 및 기타 제3자의 저작권 등 지적재산권 등을 사전 승낙 없이 복제, 전송, 출판, 배포, 방송 및 기타 방법에 의하여 상업적으로 이용하거나 제3자에게 이용하게 하는 행위
            6. +
            7. 4. 회사 및 기타 제3자의 명예를 손상시키거나 업무를 방해하는 행위
            8. +
            9. 5. 외설 또는 폭력적인 메시지, 팩스, 음성, 메일, 기타 공서양속에 반하는 정보를 서비스에 공개 또는 게시하는 행위
            10. +
            11. 6. 타인의 의사에 반하는 내용을 지속적으로 전송하는 행위
            12. +
            13. 7. 선량한 풍속 또는 기타 사회질서를 해치는 행위
            14. +
            15. 8. 회사의 동의 없이 영리를 목적으로 서비스를 사용하는 행위
            16. +
            17. 9. 제3자에게 임의로 서비스를 임대하는 행위
            18. +
            19. 10. 서비스의 안정적인 운영에 지장을 주거나 줄 우려가 있는 일체의 행위
            20. +
            21. 11. 불법스팸, 불법정보, 발신번호 조작 등으로 인지되는 메시지를 발송하는 행위
            22. +
            23. 12. 기타 불법적이거나 부당한 행위
            24. +
            + ② 이용자는 영리목적의 광고성 정보 전송 시 「정보통신망법」에 따라 수신자의 명시적인 사전 동의를 얻고 광고표기 의무 등을 준수하여야 하며, 회사를 통해 전달되는 수신거부 요청에 대해서는 즉각적으로 처리하고 24시간 이내에 처리결과를 회사에 회신해야 합니다.
            + ③ 이용자는 「전기통신사업법」 제84조의2(전화번호의 거짓표시 금지 및 이용자 보호)에 의거 발신번호를 사전에 등록하고 등록된 번호로만 문자를 발송하여야 합니다. 단, 「전기통신사업법」 등의 관련 법률에서 예외로 허용한 경우는 제외하며, 만약 정당하지 않은 방법으로 전화번호를 변경하여 발신하는 경우, 관련 법규에 따라 처벌받을 수 있습니다.
            + ④ 이용자는 알림톡 또는 친구톡 서비스를 이용 시, 수신자가 발신자를 정확하게 식별할 수 있는 발신 프로필을 사용하여야 하며 해당사항에 틀림이 없는지 지속적으로 확인해야 합니다.
            + ⑤ 이용자는 회사에 실제로 연락이 가능한 이메일, 휴대전화번호 등의 정보를 제공하고 해당 정보를 최신으로 유지하여야 하며, 회사의 통지를 확인하여야 합니다.
            + ⑥ 회사는 이용자가 제1항부터 제4항까지의 의무를 위반하는 경우, 이용자의 서비스 이용을 정지하고 일방적으로 이용계약을 해지할 수 있습니다.
            + ⑦ 회사와 거래하는 문자재판매사업자는 전송자격인증을 받고 전송자격인증제운영규정을 준수해야 합니다. +
          • +
          +

          제4장 회원의 권리에 관한 조치

          +
            +
          • 12조(동의의 철회)회사는 이용자가 서비스 화면에서 자신의 개인정보에 대한 수집, 이용 또는 제공에 대한 동의를 철회할 수 있도록 필요한 조치를 취해야 합니다.
          • +
          • 13조(민원처리)① 회사는 전화, 전자우편 또는 서비스 화면의 상담창구 등을 통하여 이용고객의 불만 등 민원을 접수합니다.
            + ② 민원의 처리는 담당자가 직접 전화를 통해 즉시 처리하는 것을 원칙으로 하되, 전자우편 또는 서비스 화면의 상담청구 등을 통한 민원접수 처리는 영업일 기준 24시간 이내에 처리하며, 각 민원 유형별 처리절차 및 처리기간은 다음과 같습니다.
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            민원형태유 형원 인처리절차처리기간 (영업일 기준)
            서비스 관련통신 장애회사 귀책사과 및 품질개선2일
            시스템 장애회사 귀책사과 및 품질개선2일
            이용자 귀책대고객 설명2일
            요금 관련청구 요금 이의회사 귀책과금 전 : 비과금 요청3일
            과금 후 : 환불3일
            이용자 귀책대고객 설명2일
            기타기타 이의회사/이용자 귀책사과 및 품질개선2일
            +
          • +
          +

          제5장 서비스의 제공 및 이용

          +
            +
          • 14조(서비스의 제공, 변경 및 중단)① 회사는 이용자에게 다음과 같은 서비스를 제공합니다.
            +
              +
            1. 1. 문자메시지 대량발송 서비스
            2. +
            3. 2. 카카오톡 알림톡 및 친구톡 등 대량발송 서비스
            4. +
            5. 3. 주소록 서비스
            6. +
            7. 4. 나만의 맞춤문자 제작서비스
            8. +
            9. 5. 팩스 대량발송 서비스
            10. +
            11. 6. 기타 회사가 추가 개발하거나 다른 회사와의 제휴계약 등을 통해 이용자에게 제공하는 일체의 서비스
            12. +
            + ② 회사는 제1항에서 정한 서비스를 변경하여 제공할 수 있으며, 그 변경될 서비스의 내용 및 제공일자를 제9조에서 정한 방법으로 이용자에게 통지합니다.
            + ③ 서비스는 연중무휴, 1일 24시간 제공함을 원칙으로 합니다. 다만, 회사는 컴퓨터 등 정보통신설비의 점검ㆍ보수ㆍ교체, 고장, 이용폭주, 통신두절 또는 운영상의 상당한 이유가 있는 경우 서비스의 제공을 일시적으로 중단할 수 있으며, 이 경우 제9조에서 정한 방법으로 이용자에게 통지합니다. 다만, 사전에 통지할 수 없는 부득이한 사유가 있는 경우 이를 사후에 통지할 수 있습니다.
            + ④ 회사는 서비스의 제공에 필요한 경우 정기점검을 실시할 수 있으며, 정기점검 시간은 서비스 제공화면에 공지한 바에 따릅니다.
            + ⑤ 회사는 운영상, 기술상의 필요에 따라 제공하고 있는 서비스의 전부 또는 일부를 변경할 수 있으며, 서비스 페이지의 UIㆍUXㆍ디자인ㆍ콘텐츠 등은 사전예고 없이 수정될 수 있습니다.
            + ⑥ 회사는 무료로 제공되는 서비스의 전부 또는 일부를 회사의 정책 및 운영의 필요상 수정, 중단, 변경할 수 있습니다.
            + ⑦ 회사는 천재지변, 시스템(통신) 장애 및 점검, 서비스 양도 및 폐지(휴지) 등으로 인해 서비스 제공이 불가한 경우 다음과 같이 처리합니다.
            +
              +
            1. 1. 천재지변 등을 제외한 서비스 제공이 불가능한 경우 회원에게 사전 공지합니다.
            2. +
            3. 2. 천재지변 등을 제외한 서비스 제공이 불가능한 경우 회원에 사전 공지 없이 서비스를 중단하였을 시, 이에 대한 회원에 따른 손해를 확인 후 보상 및 할인 청구합니다.
            4. +
            5. 3. 회사는 사업의 전부 및 일부를 휴업 또는 폐업하고자 할 때에는 그 휴업 또는 폐업 예정일 30일 전까지 그 내용을 회원에게 이메일, 홈페이지 등을 이용하여 공지합니다.
            6. +
            +
          • +
          • 15조(서비스 이용의 제한 또는 정지)① 회사는 이용자가 이 약관의 의무를 위반하거나 서비스의 정상적인 운영을 방해한 경우 서비스 이용을 제한하거나 정지할 수 있습니다.
            + ② 제1항에도 불구하고 「주민등록법」을 위반한 명의도용 및 결제도용, 「저작권법」을 위반한 불법프로그램의 제공 및 운영방해, 「정보통신망법」을 위반한 불법스팸 발송 및 불법통신, 해킹, 악성프로그램의 배포, 접속권한 초과행위 등과 같이 관련 법을 위반한 경우에는 즉시 영구 이용정지 할 수 있습니다.
            + ③ 제2항에 따른 영구 이용정지 시 서비스 내의 금액, 포인트, 혜택 및 권리 등은 모두 소멸되며 회사는 이에 대해 별도로 보상하지 않습니다.
            + ④ 회사는 이용자가 다음 각 호의 어느 하나에 해당하는 경우, 30일간 당해 서비스의 이용을 즉시 정지(전부 또는 일부) 할 수 있으며, 이용정지 등의 원인이 된 사유가 완전히 해소되기 전까지는 이용정지 등의 조치를 해제하지 아니할 수 있습니다.
            +
              +
            1. 1. 방송통신위원회ㆍ한국인터넷진흥원ㆍ과학기술정보통신부ㆍ전송사 등(이하 “관계기관”이라 한다)이 불법스팸 등 불법행위의 전송사실을 확인하여 이용정지를 요청하는 경우
            2. +
            3. 2. 이용자가 전송하는 광고로 인하여 회사의 서비스 제공에 장애를 야기하거나 야기할 우려가 있는 경우
            4. +
            5. 3. 이용자가 전송하는 광고의 수신자가 불법스팸으로 신고하는 경우
            6. +
            7. 4. 이용자에게 제공하는 서비스가 불법스팸 전송에 이용되고 있는 경우
            8. +
            9. 5. 전송한 광고성 정보가 불법스팸임이 확인된 경우
            10. +
            11. 6. 불법스팸 전송으로 과태료가 부과된 경우
            12. +
            13. 7. 회사에게 증빙서류 등을 통해 불법스팸 전송이 아님을 확인하여 주지 않고 1일 500건을 초과하는 메시지를 전송하는 경우
            14. +
            15. 8. 이용자가 발신번호를 변작하는 등 거짓으로 표시한 경우
            16. +
            17. 9. 관계기관이 발신번호 변작 등을 확인하여 이용 정지를 요청하는 경우
            18. +
            19. 10. 서비스의 안정적 운영을 방해할 목적으로 다량의 정보를 전송하거나 정보통신설비의 오동작 또는 시스템 보유 정보 파괴를 유발시키거나 유포하는 경우
            20. +
            21. 11. 이용자가 서비스 이용요금을 연체하는 경우
            22. +
            23. 12. 다른 이용자 또는 제3자의 지식재산권을 침해하거나 명예를 손상시킨 경우
            24. +
            + ⑤ 회사는 불법스팸을 전송하였다고 확인된 이용자가 이용 중인 다른 번호가 불법스팸에 악용되고 있거나, 악용될 우려가 있다는 객관적 정황이 있는 경우에는 그 다른 번호도 이용 정지할 수 있습니다.
            + ⑥ 회사는 서비스 이용을 정지 또는 제한하는 경우, 그 사실을 당해 이용자에게 통지합니다. 다만, 미리 통지하는 것이 곤란한 경우에는 이용정지 또는 제한 후 통지할 수 있습니다.
            + ⑦ 회사는 이용자의 정보가 부당한 목적으로 사용되는 것을 방지하고 보다 원활한 서비스 제공을 위하여 12개월 이상 계속해서 로그인을 포함한 서비스 이용이 없는 아이디를 휴면아이디로 분류하고 서비스 이용을 정지할 수 있습니다.
            + ⑧ 휴면아이디로 분류되기 30일 전까지 전자우편 등으로 휴면아이디로 분류된다는 사실, 일시 및 개인정보 항목을 이용자에게 통지하며, 휴면아이디로 분류 시 개인정보는 서비스 이용중인 개인정보와 별도 분리하여 보관합니다. 이때, 보관되는 정보는 보관 외 다른 목적으로 이용되지 않으며, 관련 업무 담당자만 열람할 수 있도록 접근을 제한합니다.
            + ⑨ 이용자는 휴면아이디 보관기간 내에 로그인을 통해 휴면아이디 상태를 해제할 수 있습니다. +
          • +
          • 16조(발송량의 제한)① 회사는「정보통신망법」에서 금지하는 대량의 불법스팸 전송을 방지하기 위하여 이용자의 아이디당 1일 500건을 초과하는 문자 메시지 발송을 제한할 수 있습니다. 단, 이용자가 제출하는 증빙서류 등을 통해 불법 스팸 전송이 아님을 확인할 수 있는 경우 초과 전송이 가능하도록 예외를 인정할 수 있습니다.
            + ② 제1항 단서에 따라 이용자가 제출한 증빙서류 등을 통해 불법스팸 전송이 아님을 확인하였음에도, 이용자의 메시지 발송량이 과다할 경우 회사는 발송을 제한할 수 있습니다.
            + ③ 친구톡 메시지는 매일 20시부터 익일 08시까지 전송이 제한됩니다. +
          • +
          • 17조(계약의 해지)① 이용자는 본인이 직접 서비스를 통하여 이용계약의 해지를 요청할 수 있으며, 회사는 회사에서 정한 소정의 양식에 의하여 이를 즉시 처리합니다.
            + ② 회사는 이용자가 다음 각 호의 어느 하나에 해당하는 경우, 이용자의 동의 없이 이용계약을 해지할 수 있습니다.
            +
              +
            1. 1. 이용자가 약관을 위반하고 일정 기간 이내에 위반 내용을 해소하지 않는 경우
            2. +
            3. 2. 회사의 서비스 제공목적 외의 용도로 서비스를 이용하거나 제3자에게 임의로 서비스를 임대한 경우
            4. +
            5. 3. 관계기관이 불법스팸 등 불법행위의 전송사실을 확인하여 계약해지를 요청하는 경우
            6. +
            7. 4. 제11조에 따른 이용자의 의무를 위반한 경우
            8. +
            9. 5. 제15조제4항에 따른 이용정지를 당한 이후 1년 이내에 이용정지 사유가 재발한 경우
            10. +
            11. 6. 제15조제4항에 따른 이용정지 기간 내에 이용 정지 사유를 해소하지 않고, 이용 정지일로부터 12개월이 경과한 경우
            12. +
            13. 7. 회사의 이용요금 등의 납입청구에 대하여 이용자가 이용요금을 체납할 경우
            14. +
            15. 8. 타인의 명의로 계약하였거나 계약 시 제출한 자료 및 정보가 허위 또는 누락되었음이 확인된 경우
            16. +
            17. 9. 불특정 다수를 대상으로 무차별적으로 불법스팸을 전송한 사실이 확인된 경우
            18. +
            19. 10. 이용자가 전송한 광고성 정보에 대해 회사가 한국인터넷진흥원에 불법스팸 유무확인을 요청하여 불법스팸임이 확인된 경우
            20. +
            21. 11. 수신처를 자동으로 생성하여 불특정 다수에게 광고성 메시지를 전송한 경우
            22. +
            23. 12. 전송자를 확인하지 못하게 할 목적으로 발신번호를 변작하여 영리목적의 광고성 정보를 전송한 사실이 확인된 경우
            24. +
            25. 13. 이용자가 금융기관으로부터 거래정지 처분을 받고 이용계약을 수행할 능력이 없다고 인정되는 경우
            26. +
            27. 14. 이용자가 행정청 등으로부터 영업취소, 허가취소, 영업정지 등의 처분을 받은 경우
            28. +
            29. 15. 이용자가 어음 및 수표의 부도, 파산신고 또는 회생절차의 신청 등 경영상 중대한 사유가 발생하여 이용계약을 수행할 능력이 없다고 인정되는 경우
            30. +
            + ③ 회사는 불법스팸을 전송하였다고 확인된 이용자가 이용 중인 다른 번호가 불법스팸에 악용되고 있거나 악용될 우려가 있다는 객관적 정황이 있는 경우에는 그 다른 번호에 대한 서비스도 해지할 수 있습니다.
            + ④ 회사는 제2항 및 제3항에 따른 해지시, 이를 이용자에게 통지하여야 하며, 만약 이용자의 책임 있는 사유로 통지할 수 없는 경우에는 이용자가 사전 제출한 정보로 통지를 발송한 때에 도달된 것으로 봅니다. 다만, 회사가 긴급하게 해지할 필요가 있다고 인정하는 경우에는 지체 없이 사후 통지(재고지, 홈페이지 또는 이메일 공지)로 대체 할 수 있습니다.
            + ⑤ 회사는 휴면아이디가 휴면상태로 4년 이상 지속될 경우 이용계약을 해지할 수 있습니다. +
          • +
          • 18조(각종 자료의 저장기간)회사는 서비스별로 이용자의 필요에 의해 저장하고 있는 자료에 대하여 일정한 저장기간을 정할 수 있으며 필요에 따라 그 기간을 변경할 수 있습니다. +
          • +
          • 19조(게시물의 저작권)① 이용자가 서비스 페이지에 게시하거나 등록한 자료의 지적재산권은 이용자에게 있습니다. 단, 회사는 서비스 홈페이지의 게재권을 가지며 회사의 서비스 내에 한하여 이용자의 게시물을 활용할 수 있습니다.
            + ② 회사는 이용자가 서비스에 게재한 정보의 정확성 및 신뢰도 등 내용에 대해서는 책임을 지지 않습니다.
            + ③ 이용자는 서비스를 이용하여 얻은 정보를 가공, 판매하는 행위 등 게재된 자료를 상업적으로 이용할 수 없으며 이를 위반하여 발생하는 제반 문제에 대한 책임은 이용자 본인에게 있습니다.
            + ④ 회사는 이용자가 서비스에 게시 또는 게재하거나 서비스를 통해 전송·수신한 내용물 및 그 결과에 대하여 책임지지 않으며, 다음 각 호의 어느 하나에 해당하는 경우 게시물을 임의로 삭제할 수 있습니다.
            +
              +
            1. 1. 타인을 비방하거나 명예를 손상시키는 내용인 경우
            2. +
            3. 2. 공공질서 및 미풍양속에 위반되는 내용인 경우
            4. +
            5. 3. 안정적 서비스 제공에 지장을 주거나 줄 우려가 있는 경우
            6. +
            7. 4. 범죄행위에 관련된다고 판단되는 경우
            8. +
            9. 5. 회사 및 타인의 지적재산권 등 기타 권리를 침해하는 내용인 경우
            10. +
            11. 6. 특정업체 및 제품의 선전 등 기타 상용목적으로 게시되는 내용인 경우
            12. +
            13. 7. 입력된 정보를 무단으로 개조하는 경우
            14. +
            15. 8. 타 이용자의 아이디 및 비밀번호를 도용하는 경우
            16. +
            17. 9. 게시판의 목적에 맞지 않는 사이버 시위 및 도배 목적의 내용인 경우
            18. +
            19. 10. 기타 관계 법령에서 위반된다고 판단하는 경우
            20. +
            +
          • +
          • 20조(지적재산권의 보호)① 회사가 작성한 저작물에 대한 저작권 및 기타 지적재산권은 모두 회사에 귀속하며 서비스 외에서의 복제, 전송, 배포 등의 일체의 이용은 금지됩니다.
            + ② 이용자는 서비스를 이용함으로써 얻은 정보를 회사의 사전 승낙 없이 임의 가공, 판매, 복제, 송신, 출판, 배포, 방송, 기타 방법에 의하여 영리목적으로 이용하거나 제3자에게 이용하게 하여서는 안됩니다.
            + ③ 회사가 제공하는 모든 콘텐츠 및 서비스에 대해서는 이용자가 단순 링크의 방법이나 기타 전자적인 방법을 통하여 본 사이트 외에서 이용하는 것은 상업적 목적 여부를 불문하고 금지됩니다. +
          • +
          +

          제6장 요금 및 환불 등

          +
            +
          • 21조(요금 등의 산정)① 회사가 제공하는 유료서비스 이용과 관련하여 이용자가 납부하여야 할 요금은 이용료 안내에 게재한 바에 따릅니다.
            + ② 요금 등은 서비스별로 정하는 바에 따라 선결제를 기본으로 하며, 필요에 따라 회사와 별도 계약을 통해 후납할 수 있습니다.
            + ③ 요금의 결제는 신용카드, 무통장입금, 휴대폰결제 등 회사가 정한 결제수단으로 합니다.
            + ④ 회사는 제1항부터 제3항까지에 따른 결제금액을 디지털 충전금(이하 “충전금”이라 한다)으로 적립하여 운영하며, 해당 충전금은 회사가 제공하는 서비스를 이용하는 시점에서 차감이 됩니다.
            + ⑤ 제2항에 따른 후납 방식의 요금산정 방식은 다음과 같습니다.
            +
              +
            1. 1. 회사는 이용자의 해당월(M월) 1일부터 말일까지의 서비스에 대한 이용요금을 익월(M+1월) 5일까지 해당월(M월) 말일자 전자세금계산서 발행을 통해 일괄 청구합니다.
            2. +
            3. 2. 이용자는 제1호에 따라 회사가 청구한 서비스 이용요금을 익월(M+1월) 15일까지 회사에 현금으로 지급합니다.
            4. +
            5. 3. 이용자와 회사의 정산 금액에 상호 2% 및 일금 5만원 이내의 차이가 있는 경우 회사의 정산자료를 기준으로 합니다.
            6. +
            7. 4. 회사가 제공하는 서비스에 대한 이용요금은 계좌이체의 방법으로 결제할 수 있습니다.
            8. +
            9. 5. 이용자는 회사가 동의하는 경우 서비스 이용요금의 납부시기 및 방법을 변경할 수 있습니다.
            10. +
            11. 6. 이용자는 서비스에 대한 이용요금을 성실히 납부하여야 하며, 이용요금의 납부 지연 시에는 연 이율 6%의 지연이자를 회사에 지급하여야 합니다.
            12. +
            + ⑥ 이용자가 타인의 결제수단을 이용하여 이용요금을 결제한 경우 회사는 이에 대한 어떠한 책임도 지지 않습니다.
            + ⑦ 카카오가 카카오톡 비즈메시지의 단가를 변경하거나, 통신사의 통신비 변경 시 이용자 또는 회사는 상호간에 이용요금의 변경을 요청할 수 있으며, 이 경우 상호 협의하여 이용요금을 결정합니다. 단, 양 당사자 간에 요구한 이용요금 변경에 대하여 이용자 또는 회사가 동의하지 않을 경우 이용자 또는 회사는 계약해지 30일 전에 서면통보하고 계약을 해지할 수 있습니다.
            + ⑧ 이용자는 회사에 지급할 이용요금에 대한 지급보증을 위하여 월 (예상)이용요금의 2배에 해당하는 보증보험증권, 예치금, 기타 이에 상응하는 담보를 회사가 요구할 경우 회사에게 제출하여야 하며, 회사는 제공하는 서비스의 매월 이용요금에 따라 그 한도를 조정하여 담보금액 증액을 이용자에게 요구할 수 있습니다. 단, 그에 따른 부대 비용은 이용자의 비용으로 합니다.
            + ⑨ 회사의 요구에도 불구하고 이용자가 제8항의 담보를 미제출할 경우 회사는 이용자의 서비스 이용을 제한할 수 있습니다.
            + ⑩ 이용자는 이용자의 관리 소홀 및 부주의로 인해 이용요금이 발생될 경우, 이에 대한 이용요금을 자신의 비용으로 모두 부담해야 합니다. +
          • +
          • 22조(요금 등의 이의신청)① 이용자는 청구된 요금 등에 대하여 이의가 있는 경우 청구일로부터 3개월 이내에 회사에 이의신청을 할 수 있습니다.
            + ② 회사는 제1항의 이의신청 접수 후 2주 이내에 해당 이의신청의 타당성 여부를 조사하여 그 결과를 신청자에게 통지합니다.
            + ③ 부득이한 사유로 인하여 제2항에서 정한 기간 내에 이의신청 결과를 통지할 수 없는 경우에는 그 사유와 처리기한을 다시 명시하여 신청자에게 통지합니다. +
          • +
          • 23조(불법 면탈 요금의 청구)① 이용자가 불법으로 이용요금 등을 면탈할 경우에는 면탈한 금액의 2배에 해당하는 금액을 청구합니다.
            + ② 제21조제2항에 따른 후납 고객이 이용요금을 2개월 이상 연체한 경우에는 신용기관에 신용불량자로 등록할 수 있습니다. +
          • +
          • 24조(요금 등의 환불 및 소멸)① 회사는 요금 등의 과납 또는 오납이 있을 경우 그 과납 또는 오납된 요금을 전액 환불합니다. 단, 이용자의 책임 있는 사유로 과오납금이 발생한 경우, 회사가 과오납금을 환불하는데 소요되는 실비용은 이용자가 부담하여야 합니다.
            + ② 환불 시 결제금액에 따라 무상 증여된 충전금 및 포인트는 제외하며, 충전금 잔액의 10%에 해당하는 금액(PG사 결제수수료 및 송금비용 등)을 환불수수료로 공제한 후 환불하여 드립니다. 단, 요금환불은 환불요청 금액이 최소 1만원 이상인 경우에만 가능(1만원 미만 환불불가)합니다.
            + ③ 제2항의 경우 회사는 이용자가 환불을 요청(환급에 필요한 정보를 회사에 모두 제공한 경우에 한한다)한 시점으로부터 3영업일 이내에 이용자가 지정한 은행계좌로 반환요청 요금을 환불합니다. 단, 선납 시 결제방식이 취소가 가능하다면 결제 취소를 원칙으로 합니다.
            + ④ 환불을 원하는 이용자는 회사의 고객센터 또는 콜센터 등을 통하여 환불 신청 사유를 회사에 통지하고 이용자 본인이 직접 환불신청을 하여야 하며, 반드시 가입자 본인 명의의 통장에 대해서만 환불처리가 가능합니다.
            + ⑤ 제1항부터 제4항까지에도 불구하고, 다음 각 호의 어느 하나에 해당하는 경우, 잔여충전금은 금액과 상관없이 환불하지 않으며 자동 소멸됩니다.
            +
              +
            1. 1. 이용자가 별도의 환불 신청 없이 제17조제1항에 따른 해지를 하는 경우
            2. +
            3. 2. 회사가 이용자의 귀책사유로 인하여 제17조제2항 및 제3항에 따른 해지를 하는 경우
            4. +
            5. 3. 이용자가 불법스팸 발송 등 관련 법을 위반하여, 회사로부터 제15조제2항 및 제3항에 따른 영구 이용정지처리를 받은 경우
            6. +
            + ⑥ 구매한 충전금 및 포인트의 유효기간은 충전일로부터 60개월이며, 회사는 소진일 30일 전에 고객에게 전자우편 등으로 해당내용을 통지합니다.
            + ⑦ 무료 획득 또는 이벤트 등으로 회사가 부여하는 포인트의 유효기간은 사유발생일로부터 12개월이며, 소진일 30일 전에 고객에게 전자우편 등으로 해당내용을 통지합니다.
            + ⑧ 충전금은 마지막 사용일(충전 이후 사용이 없었을 경우 충전일)로부터 5년이 경과하면 소멸됩니다.
            + ⑨ 회사는 불법스팸, 불법정보, 발신번호 조작, 명의도용 등과 관련하여 경ㆍ검찰의 조사 또는 수사가 진행중이거나, 민ㆍ형사상의 소가 진행중인 경우에는, 공범 의혹 제기 등을 고려하여 법원의 공식적인 판결 결정 없이는 보상을 실시하지 아니하며, 최종 판결을 받은 경우에도 제2항의 환불수수료를 제외한 차액을 환불합니다.
            + ⑩ 서비스가 정상적으로 이루어지지 못한 경우, 사용한 충전금이나 포인트는 최장 72시간 이내 자동 재충전 처리되며, 기타 서비스의 문제 발생 시 관리자의 확인 절차 후 그 이유가 정당할 때 신속히 처리합니다.
            + ⑪ 회사는 관계 법령의 변경 등 합리적인 사유 발생 및 회사 정책상 변경이 필요한 경우, 충전금 및 포인트 운영정책을 변경하여 운영할 수 있습니다. +
          • +
          +

          제7장 손해배상 및 기타사항

          +
            +
          • 25조(손해배상의 범위 및 청구)① 회사는 회사의 귀책사유로 인한 서비스 중단으로 인하여 이용자에게 손해가 발생한 경우 이를 배상할 수 있습니다. 단, 발생한 손해배상액의 총액은 이용자가 지불한 이용요금의 2배를 초과할 수는 없으며, 이미 정상적으로 발송된 건은 제외한 후 나머지 요금의 2배를 한도로 손해배상합니다. +
            + ※ 손해배상액 한도 = (총 결제금액 – 정상 서비스 이용금액) × 2
            + * 누적 결제 시에도 회사 귀책사유에 따른 결제건에 한하여 보상하며, 정상 서비스 이용에 따라 소진된 소멸 결제건에 대해서는 보상 미실시 +
            + ② 손해배상의 청구는 회사에 청구사유, 청구금액 및 산출근거를 객관적이고 명확히 기재하여 전자우편 또는 서면(공문, 등기)으로 신청하여야 합니다.
            + ③ 회사 및 타인에게 피해를 주어 피해자의 고발 또는 소송 제기로 인하여 손해배상이 청구된 이용자는 이에 응하여야 합니다.
            + ④ 이용자는 불법스팸, 불법정보, 발신번호 조작 등으로 인지되는 메시지 발송을 통해 회사에 손해를 끼치는 경우, 이를 배상하여야 합니다. +
          • +
          • 26조(면책)① 제25조에도 불구하고, 회사는 다음 각 호의 어느 하나의 사유로 서비스를 제공할 수 없는 경우, 이로 인하여 이용자에게 발생한 손해에 대해서는 책임을 부담하지 않습니다. +
              +
            1. 1. 천재지변 또는 이에 준하는 불가항력의 상태가 있는 경우
            2. +
            3. 2. 회사의 고의 또는 과실이 없는 사유로 인한 경우
            4. +
            5. 3. 이용자의 고의 또는 과실로 인하여 서비스 이용에 장애가 있는 경우
            6. +
            7. 4. 서비스 제공을 위하여 회사와 서비스 제휴계약을 체결한 제3자의 고의적인 서비스 방해가 있는 경우
            8. +
            9. 5. 회사에게 회선, 통신망, 전용선망을 제공하고 있는 이동통신사 또는 부가통신사업자, 카카오 측의 장애, 귀책사유로 인한 서비스의 불완전 및 불능으로 이용자 또는 제3자에게 야기된 손해
            10. +
            11. 6. 컴퓨터 등 정보통신설비의 점검ㆍ보수ㆍ교체ㆍ증설 등 서비스의 효율적 제공을 위해 계획된 서비스 중지 일정을 사전에 공지한 경우
            12. +
            13. 7. 해당 서비스나 디지털 콘텐츠의 품질, 성능, 정확도 또는 노력의 면에서 이용자가 불만족하는 경우
            14. +
            15. 8. 이용자가 게시 또는 전송한 자료의 내용
            16. +
            17. 9. 이용자 상호 간 또는 이용자와 제3자 상호 간 서비스를 매개로 하여 물품거래 등을 한 경우
            18. +
            19. 10. 제10조제7항에 따라 서비스 제공을 거절하거나, 제15조에 따라 이용자의 서비스 이용을 제한 또는 정지함으로써 발생할 수 있는 이용자의 손해
            20. +
            21. 11. 회사가 무료로 제공하는 서비스에 대하여 회사의 귀책사유로 이용자에게 서비스를 제공하지 못하는 경우
            22. +
            + ② 회사가 정상적으로 서비스를 제공한 경우, 이로 인하여 발생하는 이용자와 수신자 간의 모든 민ㆍ형사상 책임은 이용자에게 있으며, 회사는 제3자로부터의 어떠한 배상, 소송 등에 대하여도 책임을 면합니다. +
          • +
          • 27조(분쟁의 처리 및 관할법원)① 회사의 귀책사유가 명백히 인정되는 경우, 이용자는 회사를 상대로 소송 등을 제기하기 전에 우선 회사에 이를 알려 원만히 분쟁을 해결할 수 있도록 합니다.
            + ② 회사와 이용자는 개인정보에 관한 분쟁이 있을 경우 신속하고 효과적인 분쟁해결을 위하여 개인정보분쟁조정위원회에 그 처리를 의뢰할 수 있습니다.
            + ③ 회사와 이용자 간에 서비스 또는 이 약관에 관한 분쟁이 발생하여 소송을 할 필요가 있을 때에는 회사의 사업장소재지를 관할하는 법원을 관할법원으로 합니다. +
          • +
          +

          부칙

          +
            +
          • 1조(시행일)이 약관은 2025년 7월 30일부터 시행됩니다.
          • +
          • 2조(경과조치)2024년 11월 29일부터 시행되던 종전의 약관은 본 약관으로 대체합니다.
          • +
          +
          +

          이용약관 개정이력 보기

          +
          + +
          +
          +
          +
          + + +
          + +
          + +
          +
          + + + +
          + + + + \ No newline at end of file From 276afbb432daeb6e3a72f060c2c6410ce91277e0 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Tue, 22 Jul 2025 17:26:19 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=EC=9D=B4=EC=9A=A9=EC=95=BD=EA=B4=80=202025?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WEB-INF/jsp/web/com/webCommonFooter.jsp | 2 +- .../WEB-INF/jsp/web/com/webCommonHeader.jsp | 2 +- .../cop/bbs/TermsListAgreement_2025_Ajax.jsp | 441 ++++++++++++++++++ .../agree_private/agreeSelectVersion.jsp | 3 +- 4 files changed, 445 insertions(+), 3 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/web/cop/bbs/TermsListAgreement_2025_Ajax.jsp diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp index 459e67ff..d01d06dc 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp @@ -27,7 +27,7 @@ function footerSiteLinkPageTwoGo (){
          diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp index 6a9f7fc6..71ddc8e0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp @@ -1666,7 +1666,7 @@ function actionLogin_end(){
          • 공지사항
          • -
          • 이용약관
          • +
          • 이용약관
          • 자주하는 질문
          • 1:1 문의
          • 불편신고
          • diff --git a/src/main/webapp/WEB-INF/jsp/web/cop/bbs/TermsListAgreement_2025_Ajax.jsp b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/TermsListAgreement_2025_Ajax.jsp new file mode 100644 index 00000000..775b2cd1 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/TermsListAgreement_2025_Ajax.jsp @@ -0,0 +1,441 @@ + <%-- + Class Name : FaqListAjax.jsp + Description : (사용자)자주하는 질문 Ajax + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2009.03.19 이삼섭 최초 생성 + 2011.08.31 JJY 경량환경 버전 생성 + + author : 공통서비스 개발팀 이삼섭 + since : 2009.03.19 +--%> +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + + + + + +
            +
            +

            제1장 총칙

            +
              +
            • 1조(목적)이 약관은 주식회사 아이티앤(이하 “회사”라 한다)이 제공하는 인터넷 서비스 문자온(www.munjaon.co.kr, 이하 “서비스”라 한다)을 이용함에 있어 회사와 이용자의 권리, 의무, 책임사항 및 기타 필요한 사항을 규정함을 목적으로 합니다.
            • +
            • 2조(용어의 정의)이 약관에서 사용하는 용어의 정의는 다음과 같습니다.
              +
                +
              1. 1. 문자온(문자ON) : 회사의 서비스명으로 이용자가 전송하고자 하는 내용ㆍ정보 등을 문자메시지, 멀티미디어메시지, 카카오톡을 통한 알림톡 또는 친구톡, 팩스 등 다양한 메시지 형태로 변화시켜 전송하는 서비스
              2. +
              3. 2. 이용자 : 회사에 개인정보를 제공하여 이용계약을 체결하고, 이용자 아이디(ID)를 부여받은 자로서 회사가 제공하는 서비스를 지속적으로 이용할 수 있는 자
              4. +
              5. 3. 아이디(ID) : 이용자의 식별과 서비스 이용을 위하여 이용자가 정하고 회사가 승인하는 문자와 숫자의 조합
              6. +
              7. 4. 비밀번호 : 이용자가 부여 받은 아이디(ID)와 일치된 이용자임을 확인하고, 이용자의 비밀을 보호하기 위해 이용자가 설정한 문자와 숫자의 조합
              8. +
              9. 5. 휴면아이디 : 12개월 이상 계속해서 로그인을 포함한 서비스 이용이 없는 아이디
              10. +
              11. 6. 해지 : 회사와 이용자 간 맺은 이용계약을 해약하는 것
              12. +
              13. 7. 문자메시지 : 정보통신망을 통해 수신자에게 발송되는 메시지(이하 “메시지”라 한다)
              14. +
              15. 8. 스팸메시지 : 정보통신망을 통해 수신자의 명시적인 사전 동의 없이 일방적으로 전송 또는 게시되는 영리목적의 광고성 정보
              16. +
              17. 9. 불법스팸메시지 : 「정보통신망 이용촉진 및 정보보호 등에 관한 법률(이하 “정보통신망법”이라 한다)」 제50조부터 제50조의8을 위반하여 전송 또는 게시되는 영리목적의 광고성 정보
              18. +
              19. 10. 문자피싱메시지 : 전자금융사기를 목적으로 전송 또는 게시되는 정보
              20. +
              21. 11. 스미싱메시지 : 메시지 내용 중 인터넷 주소를 클릭하면 악성코드가 설치되어 수신자가 모르는 사이에 금전적 피해 또는 개인ㆍ금융정보 탈취 피해를 야기하는 메시지
              22. +
              23. 12. 불법정보 : 「정보통신망법」 제44조의7에 따라 정보통신망을 통한 유통을 금지하는 음란물, 명예훼손, 사이버스토킹, 해킹ㆍ바이러스, 청소년 유해물 표시위반, 도박ㆍ사해행위, 개인정보거래, 총포 등 불법제조, 국가안보 위반, 기타 그 밖에 범죄를 목적으로 하거나 교사 또는 방조하는 내용의 정보
              24. +
              25. 13. 카카오톡 : 주식회사 카카오(이하 “카카오”)가 운영하는 모바일 메신저 기반의 실시간 커뮤니케이션 서비스로 알림톡, 친구톡 또는 해당 서비스를 제공하는 어플리케이션
              26. +
              27. 14. 알림톡 : 주문, 예약, 결제, 배송 정보 등 「정보통신망법」 및 한국인터넷진흥원 지침상 광고성 정보의 예외로 분류되는 정보 중 일부를 카카오톡 채널 추가 여부와 상관 없이 발송 가능한 메시지
              28. +
              29. 15. 친구톡 : 발신자의 카카오톡 채널과 채널 추가된 카카오톡 이용자에게만 발송 가능한 메시지
              30. +
              31. 16. 카카오톡 채널 : 카카오의 공식 계정 서비스 중 하나로서 기업 및 단체가 카카오톡 이용자와 커뮤니케이션 할 수 있는 서비스
              32. +
              33. 17. 발신 프로필(채널ID) : 카카오톡 채널 개설을 통해 확보한 알림톡 또는 친구톡을 발송하는 주체에 대한 식별정보
              34. +
              35. 18. 전송자격 인증제 : 「전기통신사업법」 제2조제14호나목의 특수한 유형의 부가통신역무를 제공하는 사업자가 영리 목적의 광고성 정보를 발송하는 경우 사전에 문자중계사 또는 인증업무를 위탁받은 운영기관이 심사를 통해 인증을 부여하는 제도
              36. +
              +
            • +
            • 3조(약관의 게시와 개정)① 회사는 이 약관의 내용을 서비스 화면에 이용자가 확인하기 쉽게 게시하며, 이용자가 이에 동의함으로써 그 효력이 발생합니다.
              + ② 회사는 「약관의 규제에 관한 법률」, 「정보통신망법」, 「전자문서 및 전자거래 기본법」, 「전자상거래 등에서의 소비자보호에 관한 법률(이하 “전자상거래법”이라 한다」 등 관련 법을 위배하지 않는 범위에서 이 약관을 개정할 수 있습니다.
              + ③ 회사가 이 약관을 개정하는 경우에는 적용일자 및 개정사유를 명시하여 현행약관과 함께 제1항의 방식에 따라 그 적용일자 7일 전부터 적용일자 전까지 공지합니다. 다만, 이용자의 권리 또는 의무에 관한 중요한 규정의 변경은 최소한 30일 전에 공지하고 일정기간 서비스 내 공지사항, 전자우편 등의 전자적 수단을 통해 이를 통지하도록 합니다. +
              + ④ 회사가 제3항에 따라 개정약관을 공지 또는 통지하면서 이용자에게 약관 변경 적용일까지 거부의사를 표시하지 않으면 동의한 것으로 본다는 뜻을 명확하게 공지 또는 통지하였음에도 이용자가 명시적으로 거부의 의사표시를 하지 아니한 경우에는 개정약관에 동의한 것으로 봅니다.
              + ⑤ 이용자는 개정약관에 동의하지 않는 경우 서비스 이용을 중단하고 이용계약을 해지할 수 있습니다.
              + ⑥ 새로운 서비스가 개설될 경우 별도의 명시된 설명이 없는 한 이 약관에 따라 제공됩니다.
              + ⑦ 이용자는 약관의 변경에 대하여 주의의무를 다하여야 하며, 변경된 약관으로 인한 이용자의 피해는 회사에서 책임지지 않습니다.
              + ⑧ 이 약관의 적용기간은 이용자의 가입일부터 해지일까지로 합니다. 단, 채권 또는 채무관계가 있을 경우에는 채권, 채무의 완료일까지로 규정합니다. +
            • +
            • 4조(약관 외 준칙)① 이 약관은 회사가 제공하는 서비스에 관하여 별도의 정책 및 운영규칙과 함께 적용됩니다.
              + ② 이 약관에서 정하지 아니한 사항 및 해석에 관하여는 관계법령 또는 상관례에 따릅니다. +
            • +
            +

            제2장 서비스 이용계약 및 관리

            +
              +
            • 5조(서비스 이용계약)① 서비스 이용계약은 이용자가 되고자 하는 자가 이 약관을 읽고 약관에 동의를 한 다음 회사가 정한 소정의 양식에 따라 회원가입을 신청하며, 회사는 특별한 하자가 없는 한 접수의 순서대로 등록신청을 승낙하는 것을 원칙으로 합니다. 단, 회사는 다음 각 호의 어느 하나에 해당하는 경우에는 승낙을 하지 않거나 추후에 이용계약을 해지할 수 있습니다. +
              +
                +
              1. 1. 실명이 아니거나 타인의 명의를 이용하여 신청한 경우
              2. +
              3. 2. 서비스 이용계약 신청서의 내용을 허위로 기재하여 신청한 경우
              4. +
              5. 3. 만 18세 미만의 가입자인 경우
              6. +
              7. 4. 가입신청자가 이 약관에 의하여 과거에 회원 자격을 상실한 적이 있는 경우(단, 회사의 회원 재가입 승낙을 받은 경우에는 예외로 함)
              8. +
              9. 5. 이용자의 귀책사유로 인하여 승인이 불가능한 경우
              10. +
              11. 6. 이용자가 서비스의 정상적인 제공을 저해하거나 다른 이용자의 서비스 이용에 지장을 줄 것으로 예상되는 경우
              12. +
              13. 7. 부정한 용도로 서비스를 이용할 것으로 예상되는 경우
              14. +
              15. 8. 사회의 안녕과 질서 혹은 미풍양속에 반할 우려가 있다고 회사가 인정하는 경우
              16. +
              17. 9. 기타 회사가 정한 서비스 이용계약 등록신청 요건에 부합하지 않는 경우
              18. +
              + ② 온라인 등록신청 양식에 기재 또는 첨부하는 모든 정보는 진실된 것으로 간주하며, 거짓된 정보를 기재하는 경우 서비스 이용에 제한을 받을 수 있습니다.
              + ③ 이용자는 반드시 이용자 본인의 실명과 휴대폰 번호를 기재하여야 하며, 실명으로 등록하지 않은 경우 서비스 이용에 제한을 받게 됩니다.
              + ④ 회사는 서비스 관련 설비에 여유가 없거나 기술상 또는 업무상 문제가 있는 경우 등에는 승낙을 유보할 수 있습니다.
              + ⑤ 서비스 이용계약의 성립시기는 회사가 가입완료를 신청절차 상에서 표시한 시점으로 합니다.
              + ⑥ 회사는 이용자에 대하여 회사정책에 따라 등급별로 구분하여 이용시간, 이용횟수, 서비스 메뉴 등을 세분화하여 이용에 차등을 둘 수 있습니다.
              + ⑦ 회사는 서비스의 대량이용 등 특별한 이용에 관하여는 별도 계약을 통해 제공할 수 있습니다.
              + ⑧ 회사는 전송자격인증제에 따른 전송자격 인증을 받지 않거나, 인증이 취소된 사업자와는 거래를 하지 아니할 수 있습니다. +
            • +
            • 6조(개인정보의 처리)① 회사는 관계 법령이 정하는 바에 따라 적법하고 공정한 수단에 의하여 이용계약의 성립 및 이행에 필요한 최소한의 개인정보를 수집하고, 이용자의 개인정보를 보호하기 위해 노력합니다.
              + ② 제1항에도 불구하고, 이용자가 게시판 등 온라인 상에서 자발적으로 제공하는 개인정보는 다른 사람이 수집하여 사용할 가능성이 있으므로 이러한 위험은 이용자 자신이 책임을 집니다.
              + ③ 회사는 개인정보의 수집 시 관계 법령에 따라 「개인정보처리방침」에 그 수집범위 및 목적을 사전에 고지합니다.
              + ④ 회사는 회사가 제공하는 서비스를 이용하는 이용자를 대상으로 해당 서비스의 양적ㆍ질적 향상을 위해 이용자의 개인 식별이 가능한 개인정보를 이용자의 동의를 받아 수집하여 회사의 각종 서비스 등에 사용할 수 있습니다.
              + ⑤ 회사는 서비스 제공과 관련하여 알고 있는 이용자의 개인정보를 본인의 승낙 없이 제3자에게 누설 및 배포하지 않습니다. 다만, 관계 법령에 의한 관계기관으로부터의 요청 등 법률의 규정에 따른 적법한 절차에 의한 경우에는 그러하지 않습니다.
              + ⑥ 개인정보의 보호 및 이용에 관하여는 관계 법령 및 회사의 「개인정보처리방침」이 적용됩니다. 단, 회사의 공식 사이트 이외 링크된 사이트에 대하여는 회사의 개인정보처리방침이 적용되지 않습니다.
              + ⑦ 회사는 이용자의 시스템에 스파이웨어 등 기타 바이러스의 감염 등으로 인한 개인정보유출에 대해서는 책임을 지지 않으며, 이용자는 주기적으로 자신의 사용 시스템의 사용 여부를 관리할 책임을 가지고 있습니다. +
            • +
            • 7조(아이디 및 비밀번호 관리에 대한 의무)① 이용자는 아이디와 비밀번호에 관한 관리책임을 지며, 이를 제3자가 이용하도록 하여서는 안됩니다.
              + ② 회사는 이용자의 아이디가 다음 각 호의 어느 하나에 해당하는 경우에는 해당 아이디의 활용을 제한할 수 있습니다.
              +
                +
              1. 1. 개인정보 유출 우려가 있는 경우
              2. +
              3. 2. 반사회적 또는 미풍양속에 어긋나는 경우
              4. +
              5. 3. 회사 및 회사의 운영자로 오인할 우려가 있는 경우
              6. +
              + ③ 이용자는 아이디 및 비밀번호가 도용되거나 제3자가 사용하고 있음을 인지한 경우에는 이를 즉시 회사에 통지하고 회사의 안내에 따라야 합니다.
              + ④ 회사는 이용자가 제3항에 따른 통지를 하지 않거나, 통지를 한 이후 회사의 안내에 따르지 않아 발생한 불이익에 대하여 책임지지 않습니다.
              + ⑤ 회사는 보안 강화를 위해, 신규 가입한 이용자 또는 마지막 로그인 시점으로부터 3개월간 로그인하지 않은 이용자의 부정로그인을 방지하는 보안 로그인 기능(이용자가 사전에 등록한 휴대폰 번호에 대한 점유 인증이 완료된 경우에만 서비스 홈페이지 로그인이 가능하도록 하는 기능)을 이용자의 기본 로그인 방식으로 설정할 수 있습니다.
              + ⑥ 이용자가 제5항에 따른 보안 로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임을 지지 않습니다. +
            • +
            • 8조(이용자정보의 변경)이용자는 이용 신청 시 기재한 이용자정보가 변경되었을 경우 즉시 온라인으로 직접 수정하여야 하며, 관리자에게도 수정을 요청할 수 있습니다. 만약, 이용자가 이용자정보를 변경하지 않아 발생하는 문제에 대하여는 회사가 책임지지 않습니다. +
            • +
            • 9조(이용자에 대한 통지)① 회사가 이용자에 대한 통지를 하는 경우, 이 약관에서 별도로 정함이 없는 한 이용자가 등록한 이메일, 휴대전화, 문자메시지 등을 통해 통지할 수 있습니다. 단, 이용자가 해당 정보를 허위로 제출하거나 변경된 정보를 회사에 알리지 않은 경우에는, 이용자가 사전 제출한 정보로 통지를 발송한 때에 도달된 것으로 봅니다.
              + ② 회사는 전체 또는 불특정 다수 이용자에 대한 통지의 경우 7일 이상 서비스에 게시함으로써 제1항의 개별 통지에 갈음할 수 있습니다. +
            • +
            +

            제3장 회사 및 이용자의 의무

            +
              +
            • 10조(회사의 의무)① 회사는 관계 법령과 이 약관이 금지하는 행위를 하지 않으며, 지속적이고 안정적인 서비스를 제공하기 위해 최선의 노력을 다하여야 합니다.
              + ② 회사는 이용자가 안전하게 서비스를 이용할 수 있도록 개인정보(신용정보 포함) 보호 및 관리를 위해 필요한 조치를 취하며 「개인정보처리방침」을 공시하고 준수합니다.
              + ③ 회사는 서비스 제공목적에 맞는 서비스 이용 여부를 확인하기 위하여 상시적으로 모니터링을 실시합니다.
              + ④ 회사는 이용자에게 제공하는 유료 및 무료 서비스를 계속적이고 안정적으로 제공하기 위하여 설비에 장애가 생기거나 멸실 되었을 때 지체없이 이를 수리 또는 복구합니다. 다만, 천재지변이나 비상사태 등 부득이한 경우에는 서비스를 일시 중단하거나 영구 중지할 수 있습니다.
              + ⑤ 회사는 이용자의 회원가입 시 타인의 명의를 도용한 부정가입을 방지하기 위해 본인인증 서비스 사업자가 제공하는 인증방법을 통해 실명확인 및 본인인증을 요청합니다.
              + ⑥ 회사는 이용자가 본인인증 절차를 거치고 발신번호를 사전등록한 후 서비스를 제공합니다.
              + ⑦ 회사는 다음 각 호의 어느 하나에 해당하는 경우, 해당 서비스의 제공을 거부하는 조치를 취할 수 있으며, 이 경우 해당 조치 사실을 서비스를 제공받는 이용자 등 이해관계인에게 알립니다. 다만, 미리 알리는 것이 곤란한 경우에는 선 거부조치 후 이를 지체 없이 알려야 합니다.
              +
                +
              1. 1. 광고성 정보의 전송 또는 수신으로 서비스의 제공에 장애가 일어나거나 일어날 우려가 있는 경우
              2. +
              3. 2. 수신자가 광고성 정보의 수신을 원하지 않는 경우
              4. +
              + ⑧ 회사는 스팸메시지, 불법스팸메시지, 문자피싱메시지, 스미싱메시지(이하 “불법스팸”이라 한다)로부터 이용자 및 수신자를 보호하기 위하여 스팸차단(필터링)서비스를 통해 해당 메시지가 수신되지 않도록 사전 차단할 수 있습니다.
              + ⑨ 회사는 불법스팸, 불법정보, 발신번호조작 등으로 인지되는 메시지에 대해서 발송을 차단하거나 제한 할 수 있습니다.
              + ⑩ 회사는 이용자가 불법스팸을 전송한 사실을 확인한 경우, 한국인터넷진흥원 불법스팸대응센터 등 관계기관에 관련 자료를 첨부하여 신고할 수 있습니다.
              + ⑪ 회사는 이용자 중 문자재판매사업자에 대하여 전송자격인증제에 따라 인증이 취소된 사실을 전달받은 경우 문자재판사업자의 서비스 정지, 계약 해지 등의 조치를 취할 수 있습니다. +
            • +
            +
              +
            • 11조(이용자의 의무)① 이용자는 다음 각 호의 어느 하나에 해당하는 행위를 하여서는 안 됩니다.
              +
                +
              1. 1. 신청 또는 변경 시 허위내용을 등록하는 행위
              2. +
              3. 2. 타인의 정보를 도용하는 행위
              4. +
              5. 3. 회사 및 기타 제3자의 저작권 등 지적재산권 등을 사전 승낙 없이 복제, 전송, 출판, 배포, 방송 및 기타 방법에 의하여 상업적으로 이용하거나 제3자에게 이용하게 하는 행위
              6. +
              7. 4. 회사 및 기타 제3자의 명예를 손상시키거나 업무를 방해하는 행위
              8. +
              9. 5. 외설 또는 폭력적인 메시지, 팩스, 음성, 메일, 기타 공서양속에 반하는 정보를 서비스에 공개 또는 게시하는 행위
              10. +
              11. 6. 타인의 의사에 반하는 내용을 지속적으로 전송하는 행위
              12. +
              13. 7. 선량한 풍속 또는 기타 사회질서를 해치는 행위
              14. +
              15. 8. 회사의 동의 없이 영리를 목적으로 서비스를 사용하는 행위
              16. +
              17. 9. 제3자에게 임의로 서비스를 임대하는 행위
              18. +
              19. 10. 서비스의 안정적인 운영에 지장을 주거나 줄 우려가 있는 일체의 행위
              20. +
              21. 11. 불법스팸, 불법정보, 발신번호 조작 등으로 인지되는 메시지를 발송하는 행위
              22. +
              23. 12. 기타 불법적이거나 부당한 행위
              24. +
              + ② 이용자는 영리목적의 광고성 정보 전송 시 「정보통신망법」에 따라 수신자의 명시적인 사전 동의를 얻고 광고표기 의무 등을 준수하여야 하며, 회사를 통해 전달되는 수신거부 요청에 대해서는 즉각적으로 처리하고 24시간 이내에 처리결과를 회사에 회신해야 합니다.
              + ③ 이용자는 「전기통신사업법」 제84조의2(전화번호의 거짓표시 금지 및 이용자 보호)에 의거 발신번호를 사전에 등록하고 등록된 번호로만 문자를 발송하여야 합니다. 단, 「전기통신사업법」 등의 관련 법률에서 예외로 허용한 경우는 제외하며, 만약 정당하지 않은 방법으로 전화번호를 변경하여 발신하는 경우, 관련 법규에 따라 처벌받을 수 있습니다.
              + ④ 이용자는 알림톡 또는 친구톡 서비스를 이용 시, 수신자가 발신자를 정확하게 식별할 수 있는 발신 프로필을 사용하여야 하며 해당사항에 틀림이 없는지 지속적으로 확인해야 합니다.
              + ⑤ 이용자는 회사에 실제로 연락이 가능한 이메일, 휴대전화번호 등의 정보를 제공하고 해당 정보를 최신으로 유지하여야 하며, 회사의 통지를 확인하여야 합니다.
              + ⑥ 회사는 이용자가 제1항부터 제4항까지의 의무를 위반하는 경우, 이용자의 서비스 이용을 정지하고 일방적으로 이용계약을 해지할 수 있습니다.
              + ⑦ 회사와 거래하는 문자재판매사업자는 전송자격인증을 받고 전송자격인증제운영규정을 준수해야 합니다. +
            • +
            +

            제4장 회원의 권리에 관한 조치

            +
              +
            • 12조(동의의 철회)회사는 이용자가 서비스 화면에서 자신의 개인정보에 대한 수집, 이용 또는 제공에 대한 동의를 철회할 수 있도록 필요한 조치를 취해야 합니다.
            • +
            • 13조(민원처리)① 회사는 전화, 전자우편 또는 서비스 화면의 상담창구 등을 통하여 이용고객의 불만 등 민원을 접수합니다.
              + ② 민원의 처리는 담당자가 직접 전화를 통해 즉시 처리하는 것을 원칙으로 하되, 전자우편 또는 서비스 화면의 상담청구 등을 통한 민원접수 처리는 영업일 기준 24시간 이내에 처리하며, 각 민원 유형별 처리절차 및 처리기간은 다음과 같습니다.
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              민원형태유 형원 인처리절차처리기간 (영업일 기준)
              서비스 관련통신 장애회사 귀책사과 및 품질개선2일
              시스템 장애회사 귀책사과 및 품질개선2일
              이용자 귀책대고객 설명2일
              요금 관련청구 요금 이의회사 귀책과금 전 : 비과금 요청3일
              과금 후 : 환불3일
              이용자 귀책대고객 설명2일
              기타기타 이의회사/이용자 귀책사과 및 품질개선2일
              +
            • +
            +

            제5장 서비스의 제공 및 이용

            +
              +
            • 14조(서비스의 제공, 변경 및 중단)① 회사는 이용자에게 다음과 같은 서비스를 제공합니다.
              +
                +
              1. 1. 문자메시지 대량발송 서비스
              2. +
              3. 2. 카카오톡 알림톡 및 친구톡 등 대량발송 서비스
              4. +
              5. 3. 주소록 서비스
              6. +
              7. 4. 나만의 맞춤문자 제작서비스
              8. +
              9. 5. 팩스 대량발송 서비스
              10. +
              11. 6. 기타 회사가 추가 개발하거나 다른 회사와의 제휴계약 등을 통해 이용자에게 제공하는 일체의 서비스
              12. +
              + ② 회사는 제1항에서 정한 서비스를 변경하여 제공할 수 있으며, 그 변경될 서비스의 내용 및 제공일자를 제9조에서 정한 방법으로 이용자에게 통지합니다.
              + ③ 서비스는 연중무휴, 1일 24시간 제공함을 원칙으로 합니다. 다만, 회사는 컴퓨터 등 정보통신설비의 점검ㆍ보수ㆍ교체, 고장, 이용폭주, 통신두절 또는 운영상의 상당한 이유가 있는 경우 서비스의 제공을 일시적으로 중단할 수 있으며, 이 경우 제9조에서 정한 방법으로 이용자에게 통지합니다. 다만, 사전에 통지할 수 없는 부득이한 사유가 있는 경우 이를 사후에 통지할 수 있습니다.
              + ④ 회사는 서비스의 제공에 필요한 경우 정기점검을 실시할 수 있으며, 정기점검 시간은 서비스 제공화면에 공지한 바에 따릅니다.
              + ⑤ 회사는 운영상, 기술상의 필요에 따라 제공하고 있는 서비스의 전부 또는 일부를 변경할 수 있으며, 서비스 페이지의 UIㆍUXㆍ디자인ㆍ콘텐츠 등은 사전예고 없이 수정될 수 있습니다.
              + ⑥ 회사는 무료로 제공되는 서비스의 전부 또는 일부를 회사의 정책 및 운영의 필요상 수정, 중단, 변경할 수 있습니다.
              + ⑦ 회사는 천재지변, 시스템(통신) 장애 및 점검, 서비스 양도 및 폐지(휴지) 등으로 인해 서비스 제공이 불가한 경우 다음과 같이 처리합니다.
              +
                +
              1. 1. 천재지변 등을 제외한 서비스 제공이 불가능한 경우 회원에게 사전 공지합니다.
              2. +
              3. 2. 천재지변 등을 제외한 서비스 제공이 불가능한 경우 회원에 사전 공지 없이 서비스를 중단하였을 시, 이에 대한 회원에 따른 손해를 확인 후 보상 및 할인 청구합니다.
              4. +
              5. 3. 회사는 사업의 전부 및 일부를 휴업 또는 폐업하고자 할 때에는 그 휴업 또는 폐업 예정일 30일 전까지 그 내용을 회원에게 이메일, 홈페이지 등을 이용하여 공지합니다.
              6. +
              +
            • +
            • 15조(서비스 이용의 제한 또는 정지)① 회사는 이용자가 이 약관의 의무를 위반하거나 서비스의 정상적인 운영을 방해한 경우 서비스 이용을 제한하거나 정지할 수 있습니다.
              + ② 제1항에도 불구하고 「주민등록법」을 위반한 명의도용 및 결제도용, 「저작권법」을 위반한 불법프로그램의 제공 및 운영방해, 「정보통신망법」을 위반한 불법스팸 발송 및 불법통신, 해킹, 악성프로그램의 배포, 접속권한 초과행위 등과 같이 관련 법을 위반한 경우에는 즉시 영구 이용정지 할 수 있습니다.
              + ③ 제2항에 따른 영구 이용정지 시 서비스 내의 금액, 포인트, 혜택 및 권리 등은 모두 소멸되며 회사는 이에 대해 별도로 보상하지 않습니다.
              + ④ 회사는 이용자가 다음 각 호의 어느 하나에 해당하는 경우, 30일간 당해 서비스의 이용을 즉시 정지(전부 또는 일부) 할 수 있으며, 이용정지 등의 원인이 된 사유가 완전히 해소되기 전까지는 이용정지 등의 조치를 해제하지 아니할 수 있습니다.
              +
                +
              1. 1. 방송통신위원회ㆍ한국인터넷진흥원ㆍ과학기술정보통신부ㆍ전송사 등(이하 “관계기관”이라 한다)이 불법스팸 등 불법행위의 전송사실을 확인하여 이용정지를 요청하는 경우
              2. +
              3. 2. 이용자가 전송하는 광고로 인하여 회사의 서비스 제공에 장애를 야기하거나 야기할 우려가 있는 경우
              4. +
              5. 3. 이용자가 전송하는 광고의 수신자가 불법스팸으로 신고하는 경우
              6. +
              7. 4. 이용자에게 제공하는 서비스가 불법스팸 전송에 이용되고 있는 경우
              8. +
              9. 5. 전송한 광고성 정보가 불법스팸임이 확인된 경우
              10. +
              11. 6. 불법스팸 전송으로 과태료가 부과된 경우
              12. +
              13. 7. 회사에게 증빙서류 등을 통해 불법스팸 전송이 아님을 확인하여 주지 않고 1일 500건을 초과하는 메시지를 전송하는 경우
              14. +
              15. 8. 이용자가 발신번호를 변작하는 등 거짓으로 표시한 경우
              16. +
              17. 9. 관계기관이 발신번호 변작 등을 확인하여 이용 정지를 요청하는 경우
              18. +
              19. 10. 서비스의 안정적 운영을 방해할 목적으로 다량의 정보를 전송하거나 정보통신설비의 오동작 또는 시스템 보유 정보 파괴를 유발시키거나 유포하는 경우
              20. +
              21. 11. 이용자가 서비스 이용요금을 연체하는 경우
              22. +
              23. 12. 다른 이용자 또는 제3자의 지식재산권을 침해하거나 명예를 손상시킨 경우
              24. +
              + ⑤ 회사는 불법스팸을 전송하였다고 확인된 이용자가 이용 중인 다른 번호가 불법스팸에 악용되고 있거나, 악용될 우려가 있다는 객관적 정황이 있는 경우에는 그 다른 번호도 이용 정지할 수 있습니다.
              + ⑥ 회사는 서비스 이용을 정지 또는 제한하는 경우, 그 사실을 당해 이용자에게 통지합니다. 다만, 미리 통지하는 것이 곤란한 경우에는 이용정지 또는 제한 후 통지할 수 있습니다.
              + ⑦ 회사는 이용자의 정보가 부당한 목적으로 사용되는 것을 방지하고 보다 원활한 서비스 제공을 위하여 12개월 이상 계속해서 로그인을 포함한 서비스 이용이 없는 아이디를 휴면아이디로 분류하고 서비스 이용을 정지할 수 있습니다.
              + ⑧ 휴면아이디로 분류되기 30일 전까지 전자우편 등으로 휴면아이디로 분류된다는 사실, 일시 및 개인정보 항목을 이용자에게 통지하며, 휴면아이디로 분류 시 개인정보는 서비스 이용중인 개인정보와 별도 분리하여 보관합니다. 이때, 보관되는 정보는 보관 외 다른 목적으로 이용되지 않으며, 관련 업무 담당자만 열람할 수 있도록 접근을 제한합니다.
              + ⑨ 이용자는 휴면아이디 보관기간 내에 로그인을 통해 휴면아이디 상태를 해제할 수 있습니다. +
            • +
            • 16조(발송량의 제한)① 회사는「정보통신망법」에서 금지하는 대량의 불법스팸 전송을 방지하기 위하여 이용자의 아이디당 1일 500건을 초과하는 문자 메시지 발송을 제한할 수 있습니다. 단, 이용자가 제출하는 증빙서류 등을 통해 불법 스팸 전송이 아님을 확인할 수 있는 경우 초과 전송이 가능하도록 예외를 인정할 수 있습니다.
              + ② 제1항 단서에 따라 이용자가 제출한 증빙서류 등을 통해 불법스팸 전송이 아님을 확인하였음에도, 이용자의 메시지 발송량이 과다할 경우 회사는 발송을 제한할 수 있습니다.
              + ③ 친구톡 메시지는 매일 20시부터 익일 08시까지 전송이 제한됩니다. +
            • +
            • 17조(계약의 해지)① 이용자는 본인이 직접 서비스를 통하여 이용계약의 해지를 요청할 수 있으며, 회사는 회사에서 정한 소정의 양식에 의하여 이를 즉시 처리합니다.
              + ② 회사는 이용자가 다음 각 호의 어느 하나에 해당하는 경우, 이용자의 동의 없이 이용계약을 해지할 수 있습니다.
              +
                +
              1. 1. 이용자가 약관을 위반하고 일정 기간 이내에 위반 내용을 해소하지 않는 경우
              2. +
              3. 2. 회사의 서비스 제공목적 외의 용도로 서비스를 이용하거나 제3자에게 임의로 서비스를 임대한 경우
              4. +
              5. 3. 관계기관이 불법스팸 등 불법행위의 전송사실을 확인하여 계약해지를 요청하는 경우
              6. +
              7. 4. 제11조에 따른 이용자의 의무를 위반한 경우
              8. +
              9. 5. 제15조제4항에 따른 이용정지를 당한 이후 1년 이내에 이용정지 사유가 재발한 경우
              10. +
              11. 6. 제15조제4항에 따른 이용정지 기간 내에 이용 정지 사유를 해소하지 않고, 이용 정지일로부터 12개월이 경과한 경우
              12. +
              13. 7. 회사의 이용요금 등의 납입청구에 대하여 이용자가 이용요금을 체납할 경우
              14. +
              15. 8. 타인의 명의로 계약하였거나 계약 시 제출한 자료 및 정보가 허위 또는 누락되었음이 확인된 경우
              16. +
              17. 9. 불특정 다수를 대상으로 무차별적으로 불법스팸을 전송한 사실이 확인된 경우
              18. +
              19. 10. 이용자가 전송한 광고성 정보에 대해 회사가 한국인터넷진흥원에 불법스팸 유무확인을 요청하여 불법스팸임이 확인된 경우
              20. +
              21. 11. 수신처를 자동으로 생성하여 불특정 다수에게 광고성 메시지를 전송한 경우
              22. +
              23. 12. 전송자를 확인하지 못하게 할 목적으로 발신번호를 변작하여 영리목적의 광고성 정보를 전송한 사실이 확인된 경우
              24. +
              25. 13. 이용자가 금융기관으로부터 거래정지 처분을 받고 이용계약을 수행할 능력이 없다고 인정되는 경우
              26. +
              27. 14. 이용자가 행정청 등으로부터 영업취소, 허가취소, 영업정지 등의 처분을 받은 경우
              28. +
              29. 15. 이용자가 어음 및 수표의 부도, 파산신고 또는 회생절차의 신청 등 경영상 중대한 사유가 발생하여 이용계약을 수행할 능력이 없다고 인정되는 경우
              30. +
              + ③ 회사는 불법스팸을 전송하였다고 확인된 이용자가 이용 중인 다른 번호가 불법스팸에 악용되고 있거나 악용될 우려가 있다는 객관적 정황이 있는 경우에는 그 다른 번호에 대한 서비스도 해지할 수 있습니다.
              + ④ 회사는 제2항 및 제3항에 따른 해지시, 이를 이용자에게 통지하여야 하며, 만약 이용자의 책임 있는 사유로 통지할 수 없는 경우에는 이용자가 사전 제출한 정보로 통지를 발송한 때에 도달된 것으로 봅니다. 다만, 회사가 긴급하게 해지할 필요가 있다고 인정하는 경우에는 지체 없이 사후 통지(재고지, 홈페이지 또는 이메일 공지)로 대체 할 수 있습니다.
              + ⑤ 회사는 휴면아이디가 휴면상태로 4년 이상 지속될 경우 이용계약을 해지할 수 있습니다. +
            • +
            • 18조(각종 자료의 저장기간)회사는 서비스별로 이용자의 필요에 의해 저장하고 있는 자료에 대하여 일정한 저장기간을 정할 수 있으며 필요에 따라 그 기간을 변경할 수 있습니다. +
            • +
            • 19조(게시물의 저작권)① 이용자가 서비스 페이지에 게시하거나 등록한 자료의 지적재산권은 이용자에게 있습니다. 단, 회사는 서비스 홈페이지의 게재권을 가지며 회사의 서비스 내에 한하여 이용자의 게시물을 활용할 수 있습니다.
              + ② 회사는 이용자가 서비스에 게재한 정보의 정확성 및 신뢰도 등 내용에 대해서는 책임을 지지 않습니다.
              + ③ 이용자는 서비스를 이용하여 얻은 정보를 가공, 판매하는 행위 등 게재된 자료를 상업적으로 이용할 수 없으며 이를 위반하여 발생하는 제반 문제에 대한 책임은 이용자 본인에게 있습니다.
              + ④ 회사는 이용자가 서비스에 게시 또는 게재하거나 서비스를 통해 전송·수신한 내용물 및 그 결과에 대하여 책임지지 않으며, 다음 각 호의 어느 하나에 해당하는 경우 게시물을 임의로 삭제할 수 있습니다.
              +
                +
              1. 1. 타인을 비방하거나 명예를 손상시키는 내용인 경우
              2. +
              3. 2. 공공질서 및 미풍양속에 위반되는 내용인 경우
              4. +
              5. 3. 안정적 서비스 제공에 지장을 주거나 줄 우려가 있는 경우
              6. +
              7. 4. 범죄행위에 관련된다고 판단되는 경우
              8. +
              9. 5. 회사 및 타인의 지적재산권 등 기타 권리를 침해하는 내용인 경우
              10. +
              11. 6. 특정업체 및 제품의 선전 등 기타 상용목적으로 게시되는 내용인 경우
              12. +
              13. 7. 입력된 정보를 무단으로 개조하는 경우
              14. +
              15. 8. 타 이용자의 아이디 및 비밀번호를 도용하는 경우
              16. +
              17. 9. 게시판의 목적에 맞지 않는 사이버 시위 및 도배 목적의 내용인 경우
              18. +
              19. 10. 기타 관계 법령에서 위반된다고 판단하는 경우
              20. +
              +
            • +
            • 20조(지적재산권의 보호)① 회사가 작성한 저작물에 대한 저작권 및 기타 지적재산권은 모두 회사에 귀속하며 서비스 외에서의 복제, 전송, 배포 등의 일체의 이용은 금지됩니다.
              + ② 이용자는 서비스를 이용함으로써 얻은 정보를 회사의 사전 승낙 없이 임의 가공, 판매, 복제, 송신, 출판, 배포, 방송, 기타 방법에 의하여 영리목적으로 이용하거나 제3자에게 이용하게 하여서는 안됩니다.
              + ③ 회사가 제공하는 모든 콘텐츠 및 서비스에 대해서는 이용자가 단순 링크의 방법이나 기타 전자적인 방법을 통하여 본 사이트 외에서 이용하는 것은 상업적 목적 여부를 불문하고 금지됩니다. +
            • +
            +

            제6장 요금 및 환불 등

            +
              +
            • 21조(요금 등의 산정)① 회사가 제공하는 유료서비스 이용과 관련하여 이용자가 납부하여야 할 요금은 이용료 안내에 게재한 바에 따릅니다.
              + ② 요금 등은 서비스별로 정하는 바에 따라 선결제를 기본으로 하며, 필요에 따라 회사와 별도 계약을 통해 후납할 수 있습니다.
              + ③ 요금의 결제는 신용카드, 무통장입금, 휴대폰결제 등 회사가 정한 결제수단으로 합니다.
              + ④ 회사는 제1항부터 제3항까지에 따른 결제금액을 디지털 충전금(이하 “충전금”이라 한다)으로 적립하여 운영하며, 해당 충전금은 회사가 제공하는 서비스를 이용하는 시점에서 차감이 됩니다.
              + ⑤ 제2항에 따른 후납 방식의 요금산정 방식은 다음과 같습니다.
              +
                +
              1. 1. 회사는 이용자의 해당월(M월) 1일부터 말일까지의 서비스에 대한 이용요금을 익월(M+1월) 5일까지 해당월(M월) 말일자 전자세금계산서 발행을 통해 일괄 청구합니다.
              2. +
              3. 2. 이용자는 제1호에 따라 회사가 청구한 서비스 이용요금을 익월(M+1월) 15일까지 회사에 현금으로 지급합니다.
              4. +
              5. 3. 이용자와 회사의 정산 금액에 상호 2% 및 일금 5만원 이내의 차이가 있는 경우 회사의 정산자료를 기준으로 합니다.
              6. +
              7. 4. 회사가 제공하는 서비스에 대한 이용요금은 계좌이체의 방법으로 결제할 수 있습니다.
              8. +
              9. 5. 이용자는 회사가 동의하는 경우 서비스 이용요금의 납부시기 및 방법을 변경할 수 있습니다.
              10. +
              11. 6. 이용자는 서비스에 대한 이용요금을 성실히 납부하여야 하며, 이용요금의 납부 지연 시에는 연 이율 6%의 지연이자를 회사에 지급하여야 합니다.
              12. +
              + ⑥ 이용자가 타인의 결제수단을 이용하여 이용요금을 결제한 경우 회사는 이에 대한 어떠한 책임도 지지 않습니다.
              + ⑦ 카카오가 카카오톡 비즈메시지의 단가를 변경하거나, 통신사의 통신비 변경 시 이용자 또는 회사는 상호간에 이용요금의 변경을 요청할 수 있으며, 이 경우 상호 협의하여 이용요금을 결정합니다. 단, 양 당사자 간에 요구한 이용요금 변경에 대하여 이용자 또는 회사가 동의하지 않을 경우 이용자 또는 회사는 계약해지 30일 전에 서면통보하고 계약을 해지할 수 있습니다.
              + ⑧ 이용자는 회사에 지급할 이용요금에 대한 지급보증을 위하여 월 (예상)이용요금의 2배에 해당하는 보증보험증권, 예치금, 기타 이에 상응하는 담보를 회사가 요구할 경우 회사에게 제출하여야 하며, 회사는 제공하는 서비스의 매월 이용요금에 따라 그 한도를 조정하여 담보금액 증액을 이용자에게 요구할 수 있습니다. 단, 그에 따른 부대 비용은 이용자의 비용으로 합니다.
              + ⑨ 회사의 요구에도 불구하고 이용자가 제8항의 담보를 미제출할 경우 회사는 이용자의 서비스 이용을 제한할 수 있습니다.
              + ⑩ 이용자는 이용자의 관리 소홀 및 부주의로 인해 이용요금이 발생될 경우, 이에 대한 이용요금을 자신의 비용으로 모두 부담해야 합니다. +
            • +
            • 22조(요금 등의 이의신청)① 이용자는 청구된 요금 등에 대하여 이의가 있는 경우 청구일로부터 3개월 이내에 회사에 이의신청을 할 수 있습니다.
              + ② 회사는 제1항의 이의신청 접수 후 2주 이내에 해당 이의신청의 타당성 여부를 조사하여 그 결과를 신청자에게 통지합니다.
              + ③ 부득이한 사유로 인하여 제2항에서 정한 기간 내에 이의신청 결과를 통지할 수 없는 경우에는 그 사유와 처리기한을 다시 명시하여 신청자에게 통지합니다. +
            • +
            • 23조(불법 면탈 요금의 청구)① 이용자가 불법으로 이용요금 등을 면탈할 경우에는 면탈한 금액의 2배에 해당하는 금액을 청구합니다.
              + ② 제21조제2항에 따른 후납 고객이 이용요금을 2개월 이상 연체한 경우에는 신용기관에 신용불량자로 등록할 수 있습니다. +
            • +
            • 24조(요금 등의 환불 및 소멸)① 회사는 요금 등의 과납 또는 오납이 있을 경우 그 과납 또는 오납된 요금을 전액 환불합니다. 단, 이용자의 책임 있는 사유로 과오납금이 발생한 경우, 회사가 과오납금을 환불하는데 소요되는 실비용은 이용자가 부담하여야 합니다.
              + ② 환불 시 결제금액에 따라 무상 증여된 충전금 및 포인트는 제외하며, 충전금 잔액의 10%에 해당하는 금액(PG사 결제수수료 및 송금비용 등)을 환불수수료로 공제한 후 환불하여 드립니다. 단, 요금환불은 환불요청 금액이 최소 1만원 이상인 경우에만 가능(1만원 미만 환불불가)합니다.
              + ③ 제2항의 경우 회사는 이용자가 환불을 요청(환급에 필요한 정보를 회사에 모두 제공한 경우에 한한다)한 시점으로부터 3영업일 이내에 이용자가 지정한 은행계좌로 반환요청 요금을 환불합니다. 단, 선납 시 결제방식이 취소가 가능하다면 결제 취소를 원칙으로 합니다.
              + ④ 환불을 원하는 이용자는 회사의 고객센터 또는 콜센터 등을 통하여 환불 신청 사유를 회사에 통지하고 이용자 본인이 직접 환불신청을 하여야 하며, 반드시 가입자 본인 명의의 통장에 대해서만 환불처리가 가능합니다.
              + ⑤ 제1항부터 제4항까지에도 불구하고, 다음 각 호의 어느 하나에 해당하는 경우, 잔여충전금은 금액과 상관없이 환불하지 않으며 자동 소멸됩니다.
              +
                +
              1. 1. 이용자가 별도의 환불 신청 없이 제17조제1항에 따른 해지를 하는 경우
              2. +
              3. 2. 회사가 이용자의 귀책사유로 인하여 제17조제2항 및 제3항에 따른 해지를 하는 경우
              4. +
              5. 3. 이용자가 불법스팸 발송 등 관련 법을 위반하여, 회사로부터 제15조제2항 및 제3항에 따른 영구 이용정지처리를 받은 경우
              6. +
              + ⑥ 구매한 충전금 및 포인트의 유효기간은 충전일로부터 60개월이며, 회사는 소진일 30일 전에 고객에게 전자우편 등으로 해당내용을 통지합니다.
              + ⑦ 무료 획득 또는 이벤트 등으로 회사가 부여하는 포인트의 유효기간은 사유발생일로부터 12개월이며, 소진일 30일 전에 고객에게 전자우편 등으로 해당내용을 통지합니다.
              + ⑧ 충전금은 마지막 사용일(충전 이후 사용이 없었을 경우 충전일)로부터 5년이 경과하면 소멸됩니다.
              + ⑨ 회사는 불법스팸, 불법정보, 발신번호 조작, 명의도용 등과 관련하여 경ㆍ검찰의 조사 또는 수사가 진행중이거나, 민ㆍ형사상의 소가 진행중인 경우에는, 공범 의혹 제기 등을 고려하여 법원의 공식적인 판결 결정 없이는 보상을 실시하지 아니하며, 최종 판결을 받은 경우에도 제2항의 환불수수료를 제외한 차액을 환불합니다.
              + ⑩ 서비스가 정상적으로 이루어지지 못한 경우, 사용한 충전금이나 포인트는 최장 72시간 이내 자동 재충전 처리되며, 기타 서비스의 문제 발생 시 관리자의 확인 절차 후 그 이유가 정당할 때 신속히 처리합니다.
              + ⑪ 회사는 관계 법령의 변경 등 합리적인 사유 발생 및 회사 정책상 변경이 필요한 경우, 충전금 및 포인트 운영정책을 변경하여 운영할 수 있습니다. +
            • +
            +

            제7장 손해배상 및 기타사항

            +
              +
            • 25조(손해배상의 범위 및 청구)① 회사는 회사의 귀책사유로 인한 서비스 중단으로 인하여 이용자에게 손해가 발생한 경우 이를 배상할 수 있습니다. 단, 발생한 손해배상액의 총액은 이용자가 지불한 이용요금의 2배를 초과할 수는 없으며, 이미 정상적으로 발송된 건은 제외한 후 나머지 요금의 2배를 한도로 손해배상합니다. +
              + ※ 손해배상액 한도 = (총 결제금액 – 정상 서비스 이용금액) × 2
              + * 누적 결제 시에도 회사 귀책사유에 따른 결제건에 한하여 보상하며, 정상 서비스 이용에 따라 소진된 소멸 결제건에 대해서는 보상 미실시 +
              + ② 손해배상의 청구는 회사에 청구사유, 청구금액 및 산출근거를 객관적이고 명확히 기재하여 전자우편 또는 서면(공문, 등기)으로 신청하여야 합니다.
              + ③ 회사 및 타인에게 피해를 주어 피해자의 고발 또는 소송 제기로 인하여 손해배상이 청구된 이용자는 이에 응하여야 합니다.
              + ④ 이용자는 불법스팸, 불법정보, 발신번호 조작 등으로 인지되는 메시지 발송을 통해 회사에 손해를 끼치는 경우, 이를 배상하여야 합니다. +
            • +
            • 26조(면책)① 제25조에도 불구하고, 회사는 다음 각 호의 어느 하나의 사유로 서비스를 제공할 수 없는 경우, 이로 인하여 이용자에게 발생한 손해에 대해서는 책임을 부담하지 않습니다. +
                +
              1. 1. 천재지변 또는 이에 준하는 불가항력의 상태가 있는 경우
              2. +
              3. 2. 회사의 고의 또는 과실이 없는 사유로 인한 경우
              4. +
              5. 3. 이용자의 고의 또는 과실로 인하여 서비스 이용에 장애가 있는 경우
              6. +
              7. 4. 서비스 제공을 위하여 회사와 서비스 제휴계약을 체결한 제3자의 고의적인 서비스 방해가 있는 경우
              8. +
              9. 5. 회사에게 회선, 통신망, 전용선망을 제공하고 있는 이동통신사 또는 부가통신사업자, 카카오 측의 장애, 귀책사유로 인한 서비스의 불완전 및 불능으로 이용자 또는 제3자에게 야기된 손해
              10. +
              11. 6. 컴퓨터 등 정보통신설비의 점검ㆍ보수ㆍ교체ㆍ증설 등 서비스의 효율적 제공을 위해 계획된 서비스 중지 일정을 사전에 공지한 경우
              12. +
              13. 7. 해당 서비스나 디지털 콘텐츠의 품질, 성능, 정확도 또는 노력의 면에서 이용자가 불만족하는 경우
              14. +
              15. 8. 이용자가 게시 또는 전송한 자료의 내용
              16. +
              17. 9. 이용자 상호 간 또는 이용자와 제3자 상호 간 서비스를 매개로 하여 물품거래 등을 한 경우
              18. +
              19. 10. 제10조제7항에 따라 서비스 제공을 거절하거나, 제15조에 따라 이용자의 서비스 이용을 제한 또는 정지함으로써 발생할 수 있는 이용자의 손해
              20. +
              21. 11. 회사가 무료로 제공하는 서비스에 대하여 회사의 귀책사유로 이용자에게 서비스를 제공하지 못하는 경우
              22. +
              + ② 회사가 정상적으로 서비스를 제공한 경우, 이로 인하여 발생하는 이용자와 수신자 간의 모든 민ㆍ형사상 책임은 이용자에게 있으며, 회사는 제3자로부터의 어떠한 배상, 소송 등에 대하여도 책임을 면합니다. +
            • +
            • 27조(분쟁의 처리 및 관할법원)① 회사의 귀책사유가 명백히 인정되는 경우, 이용자는 회사를 상대로 소송 등을 제기하기 전에 우선 회사에 이를 알려 원만히 분쟁을 해결할 수 있도록 합니다.
              + ② 회사와 이용자는 개인정보에 관한 분쟁이 있을 경우 신속하고 효과적인 분쟁해결을 위하여 개인정보분쟁조정위원회에 그 처리를 의뢰할 수 있습니다.
              + ③ 회사와 이용자 간에 서비스 또는 이 약관에 관한 분쟁이 발생하여 소송을 할 필요가 있을 때에는 회사의 사업장소재지를 관할하는 법원을 관할법원으로 합니다. +
            • +
            +

            부칙

            +
              +
            • 1조(시행일)이 약관은 2025년 7월 30일부터 시행됩니다.
            • +
            • 2조(경과조치)2024년 11월 29일부터 시행되던 종전의 약관은 본 약관으로 대체합니다.
            • +
            + + + <%@include file="/WEB-INF/jsp/web/cop/bbs/include/agree_private/agreeSelectVersion.jsp"%> +
            +
            + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/agree_private/agreeSelectVersion.jsp b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/agree_private/agreeSelectVersion.jsp index 2fdf2f98..ea431ad5 100644 --- a/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/agree_private/agreeSelectVersion.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/cop/bbs/include/agree_private/agreeSelectVersion.jsp @@ -9,7 +9,8 @@

            이용약관 개정이력 보기