변경 파일 목록
총 15개
Controller (1)
LoginPsController.phpFront/Member/data (12)
kakao_connect.htmlskin/front/moment/member/login.htmlskin/front/moment/member/kakao_connect.htmlskin/front/mygreek/member/login.htmlskin/front/mygreek/member/kakao_connect.htmlskin/front/story_g/member/login.htmlskin/front/story_g/member/kakao_connect.htmlskin/mobile/moment/member/login.htmlskin/mobile/moment/member/kakao_connect.htmlskin/mobile/mygreek/member/login.htmlskin/mobile/mygreek/member/kakao_connect.htmlskin/mobile/story_g/member/login.htmlskin/mobile/story_g/member/변경 파일 코드
추가삭제
변경 전Member.php
| { | |
| $data['PAGE_URL'] = Request::getDomainUrl() . Request::getRequestUri(); | |
| $data['POST'] = Request::post()->toArray(); | |
| unset($data['POST']['loginPwd']); | |
| $data['GET'] = Request::get()->toArray(); | |
| $data['USER_AGENT'] = Request::getUserAgent(); | |
| $data['SESSION'] = \Session::get('member'); | |
변경 후Member.php
| { | |
| $data['PAGE_URL'] = Request::getDomainUrl() . Request::getRequestUri(); | |
| $data['POST'] = Request::post()->toArray(); | |
| unset($data['POST']['loginPwd'], $data['POST']['secretKey']); | |
| $data['GET'] = Request::get()->toArray(); | |
| $data['USER_AGENT'] = Request::getUserAgent(); | |
| $data['SESSION'] = \Session::get('member'); | |
변경 전MemberUtil.php
| * @param string $encryptedString 암호화된 로그인 정보 | |
| * @param string $key 암호화 키 | |
| * | |
| * @return String | |
| * @throws Exception | |
| */ | |
| public function jsDecrypt($encryptedString, $key= self::SECRET_KEY) | |
| { | |
| $json = json_decode(base64_decode($encryptedString), true); | |
| try { | |
| $salt = hex2bin($json["salt"]); | |
| $iv = hex2bin($json["iv"]); | |
| } | |
| $cipherText = base64_decode($json['ciphertext']); | |
| $iterations = (int)abs($json['iterations']); | |
| if ($iterations <= 0) { | |
| $iterations = 999; | |
| } | |
변경 후MemberUtil.php
| * @param string $encryptedString 암호화된 로그인 정보 | |
| * @param string $key 암호화 키 | |
| * | |
| * @return string|null | |
| * @throws Exception | |
| */ | |
| public function jsDecrypt($encryptedString, $key= self::SECRET_KEY) | |
| { | |
| $json = json_decode(base64_decode($encryptedString), true); | |
| // 평문 전송 전환기: 암호문 구조가 아닌 입력은 복호화 불가로 간주 (Warning 방지) | |
| if (!is_array($json) || !isset($json['salt'], $json['iv'], $json['ciphertext'])) { | |
| return null; | |
| } | |
| // hex2bin() E_WARNING 방지: salt·iv 가 짝수 길이 16진수 문자열이 아니면 복호화 불가로 간주 | |
| foreach (['salt', 'iv'] as $hexKey) { | |
| if (!is_string($json[$hexKey]) || !ctype_xdigit($json[$hexKey]) || strlen($json[$hexKey]) % 2 !== 0) { | |
| return null; | |
| } | |
| } | |
| try { | |
| $salt = hex2bin($json["salt"]); | |
| $iv = hex2bin($json["iv"]); | |
| } | |
| $cipherText = base64_decode($json['ciphertext']); | |
| $iterations = (int)abs($json['iterations'] ?? 0); | |
| if ($iterations <= 0) { | |
| $iterations = 999; | |
| } | |
변경 전LoginPsController.php
| $decryptLoginPwd = $memberUtil->jsDecrypt($request->post()->get('loginPwd'), self::SECRET_KEY); | |
| if (empty($decryptLoginPwd) === false) { | |
| $request->post()->set('loginId', trim($decryptLoginId)); | |
| $request->post()->set('loginPwd', trim($decryptLoginPwd)); | |
| } | |
| //카카오 계정탈퇴 혹은 연결해제시 카카오에서 연결끊기 콜백 url 받아 카카오 연결 정보 삭제 | |
변경 후LoginPsController.php
| $decryptLoginPwd = $memberUtil->jsDecrypt($request->post()->get('loginPwd'), self::SECRET_KEY); | |
| if (empty($decryptLoginPwd) === false) { | |
| // 클라이언트 암호화 제거 전환기: 암호문을 보내는 구스킨 잔존 상점 실측용 | |
| $logger->channel('userLogin')->info('로그인 암호문 수신', ['referer' => $request->getReferer()]); | |
| $request->post()->set('loginId', trim($decryptLoginId)); | |
| $request->post()->set('loginPwd', trim($decryptLoginPwd)); | |
| } else { | |
| // 평문 전송 스킨: 암호문 경로와 동일하게 loginId/loginPwd trim 정합 | |
| $request->post()->set('loginId', trim($request->post()->get('loginId') ?? '')); | |
| $request->post()->set('loginPwd', trim($request->post()->get('loginPwd') ?? '')); | |
| } | |
| //카카오 계정탈퇴 혹은 연결해제시 카카오에서 연결끊기 콜백 url 받아 카카오 연결 정보 삭제 | |
변경 전kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| let Encryption = { | |
| get encryptMethod() { | |
| return "AES-256-CBC"; | |
| }, | |
| get encryptMethodLength() { | |
| let encryptMethod = this.encryptMethod; | |
| let aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt: function (string, key) { | |
| let iv = CryptoJS.lib.WordArray.random(16); | |
| let salt = CryptoJS.lib.WordArray.random(256); | |
| let iterations = 999; | |
| let encryptMethodLength = this.encryptMethodLength / 4; | |
| let hashKey = CryptoJS.PBKDF2(key, salt, { hasher: CryptoJS.algo.SHA512, keySize: encryptMethodLength / 8, iterations: iterations }); | |
| let encrypted = CryptoJS.AES.encrypt(string, hashKey, { mode: CryptoJS.mode.CBC, iv: iv }); | |
| let encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| let output = { | |
| ciphertext: encryptedString, | |
| iv: CryptoJS.enc.Hex.stringify(iv), | |
| salt: CryptoJS.enc.Hex.stringify(salt), | |
| iterations: iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| }; | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| let secretKey = $("#secretKey").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| let encryptLoginId = Encryption.encrypt(loginId, secretKey); | |
| let encryptLoginPwd = Encryption.encrypt(loginPwd, secretKey); | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: encryptLoginId, | |
| loginPwd: encryptLoginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 후kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: loginId, | |
| loginPwd: loginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 전login.html
| <form id="formLogin" method="post" action="{loginActionUrl}"> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="returnUrl" name="returnUrl" value="{returnUrl}"/> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}"/> | |
| <input type="hidden" id="encryptFl" name="encryptFl" value="Y"/> | |
| <div class="member_login_box"> | |
| <h3>{=__('회원 로그인')}</h3> | |
| <div class="login_input_sec"> | |
| <script type="text/javascript"> | |
| var $formLogin; | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| var Encryption = { | |
| get encryptMethod() { | |
| return 'AES-256-CBC'; | |
| }, | |
| get encryptMethodLength() { | |
| var encryptMethod = this.encryptMethod; | |
| var aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt : function (string, key) { | |
| var iv = CryptoJS.lib.WordArray.random(16); | |
| var salt = CryptoJS.lib.WordArray.random(256); | |
| var iterations = 999; | |
| var encryptMethodLength = (this.encryptMethodLength/4); | |
| var hashKey = CryptoJS.PBKDF2(key, salt, {'hasher': CryptoJS.algo.SHA512, 'keySize': (encryptMethodLength/8), 'iterations': iterations}); | |
| var encrypted = CryptoJS.AES.encrypt(string, hashKey, {'mode': CryptoJS.mode.CBC, 'iv': iv}); | |
| var encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| var output = { | |
| 'ciphertext': encryptedString, | |
| 'iv': CryptoJS.enc.Hex.stringify(iv), | |
| 'salt': CryptoJS.enc.Hex.stringify(salt), | |
| 'iterations': iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| } | |
| /** | |
| * form serialize 값 변경 | |
| * | |
| * @param values 폼명 | |
| * @param k 변경할 inputName | |
| * @param v 변경할 inputValue | |
| */ | |
| function changeSerialize(values, k, v) { | |
| var found = false; | |
| for (i = 0; i < values.length && !found; i++) { | |
| if (values[i].name == k) { | |
| values[i].value = v; | |
| found = true; | |
| } | |
| } | |
| if (!found) { | |
| values.push({name: k,value: v}); | |
| } | |
| return values; | |
| } | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $('#btnJoinMember').click(function (e) { | |
| } | |
| } | |
| // 로그인 정보 암호화 처리 (보안이슈) | |
| var encryptLoginId = Encryption.encrypt($('#loginId').val(),$('#secretKey').val()); | |
| var encryptLoginPwd = Encryption.encrypt($('#loginPwd').val(),$('#secretKey').val()); | |
| var params = $(form).serializeArray(); | |
| params = changeSerialize(params, 'loginId', encryptLoginId); // 암호화 된 아이디로 변경 | |
| params = changeSerialize(params, 'loginPwd', encryptLoginPwd); // 암호화 된 패스워드로 변경 | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 후login.html
| <form id="formLogin" method="post" action="{loginActionUrl}"> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="returnUrl" name="returnUrl" value="{returnUrl}"/> | |
| <div class="member_login_box"> | |
| <h3>{=__('회원 로그인')}</h3> | |
| <div class="login_input_sec"> | |
| <script type="text/javascript"> | |
| var $formLogin; | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $('#btnJoinMember').click(function (e) { | |
| } | |
| } | |
| var params = $(form).serializeArray(); | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 전kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| let Encryption = { | |
| get encryptMethod() { | |
| return "AES-256-CBC"; | |
| }, | |
| get encryptMethodLength() { | |
| let encryptMethod = this.encryptMethod; | |
| let aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt: function (string, key) { | |
| let iv = CryptoJS.lib.WordArray.random(16); | |
| let salt = CryptoJS.lib.WordArray.random(256); | |
| let iterations = 999; | |
| let encryptMethodLength = this.encryptMethodLength / 4; | |
| let hashKey = CryptoJS.PBKDF2(key, salt, { hasher: CryptoJS.algo.SHA512, keySize: encryptMethodLength / 8, iterations: iterations }); | |
| let encrypted = CryptoJS.AES.encrypt(string, hashKey, { mode: CryptoJS.mode.CBC, iv: iv }); | |
| let encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| let output = { | |
| ciphertext: encryptedString, | |
| iv: CryptoJS.enc.Hex.stringify(iv), | |
| salt: CryptoJS.enc.Hex.stringify(salt), | |
| iterations: iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| }; | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| let secretKey = $("#secretKey").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| let encryptLoginId = Encryption.encrypt(loginId, secretKey); | |
| let encryptLoginPwd = Encryption.encrypt(loginPwd, secretKey); | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: encryptLoginId, | |
| loginPwd: encryptLoginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 후kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: loginId, | |
| loginPwd: loginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 전login.html
| <form id="formLogin" method="post" action="{loginActionUrl}"> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="returnUrl" name="returnUrl" value="{returnUrl}"/> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}"/> | |
| <input type="hidden" id="encryptFl" name="encryptFl" value="Y"/> | |
| <div class="member_login_box"> | |
| <h3>{=__('회원 로그인')}</h3> | |
| <div class="login_input_sec"> | |
| <script type="text/javascript"> | |
| var $formLogin; | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| var Encryption = { | |
| get encryptMethod() { | |
| return 'AES-256-CBC'; | |
| }, | |
| get encryptMethodLength() { | |
| var encryptMethod = this.encryptMethod; | |
| var aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt : function (string, key) { | |
| var iv = CryptoJS.lib.WordArray.random(16); | |
| var salt = CryptoJS.lib.WordArray.random(256); | |
| var iterations = 999; | |
| var encryptMethodLength = (this.encryptMethodLength/4); | |
| var hashKey = CryptoJS.PBKDF2(key, salt, {'hasher': CryptoJS.algo.SHA512, 'keySize': (encryptMethodLength/8), 'iterations': iterations}); | |
| var encrypted = CryptoJS.AES.encrypt(string, hashKey, {'mode': CryptoJS.mode.CBC, 'iv': iv}); | |
| var encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| var output = { | |
| 'ciphertext': encryptedString, | |
| 'iv': CryptoJS.enc.Hex.stringify(iv), | |
| 'salt': CryptoJS.enc.Hex.stringify(salt), | |
| 'iterations': iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| } | |
| /** | |
| * form serialize 값 변경 | |
| * | |
| * @param values 폼명 | |
| * @param k 변경할 inputName | |
| * @param v 변경할 inputValue | |
| */ | |
| function changeSerialize(values, k, v) { | |
| var found = false; | |
| for (i = 0; i < values.length && !found; i++) { | |
| if (values[i].name == k) { | |
| values[i].value = v; | |
| found = true; | |
| } | |
| } | |
| if (!found) { | |
| values.push({name: k,value: v}); | |
| } | |
| return values; | |
| } | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $('#btnJoinMember').click(function (e) { | |
| } | |
| } | |
| // 로그인 정보 암호화 처리 (보안이슈) | |
| var encryptLoginId = Encryption.encrypt($('#loginId').val(),$('#secretKey').val()); | |
| var encryptLoginPwd = Encryption.encrypt($('#loginPwd').val(),$('#secretKey').val()); | |
| var params = $(form).serializeArray(); | |
| params = changeSerialize(params, 'loginId', encryptLoginId); // 암호화 된 아이디로 변경 | |
| params = changeSerialize(params, 'loginPwd', encryptLoginPwd); // 암호화 된 패스워드로 변경 | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 후login.html
| <form id="formLogin" method="post" action="{loginActionUrl}"> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="returnUrl" name="returnUrl" value="{returnUrl}"/> | |
| <div class="member_login_box"> | |
| <h3>{=__('회원 로그인')}</h3> | |
| <div class="login_input_sec"> | |
| <script type="text/javascript"> | |
| var $formLogin; | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $('#btnJoinMember').click(function (e) { | |
| } | |
| } | |
| var params = $(form).serializeArray(); | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 전kakao_connect.html
| <h2>{=__('회원 정보 확인')}</h2> | |
| <div class="box kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| let Encryption = { | |
| get encryptMethod() { | |
| return "AES-256-CBC"; | |
| }, | |
| get encryptMethodLength() { | |
| let encryptMethod = this.encryptMethod; | |
| let aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt: function (string, key) { | |
| let iv = CryptoJS.lib.WordArray.random(16); | |
| let salt = CryptoJS.lib.WordArray.random(256); | |
| let iterations = 999; | |
| let encryptMethodLength = this.encryptMethodLength / 4; | |
| let hashKey = CryptoJS.PBKDF2(key, salt, { hasher: CryptoJS.algo.SHA512, keySize: encryptMethodLength / 8, iterations: iterations }); | |
| let encrypted = CryptoJS.AES.encrypt(string, hashKey, { mode: CryptoJS.mode.CBC, iv: iv }); | |
| let encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| let output = { | |
| ciphertext: encryptedString, | |
| iv: CryptoJS.enc.Hex.stringify(iv), | |
| salt: CryptoJS.enc.Hex.stringify(salt), | |
| iterations: iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| }; | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| let secretKey = $("#secretKey").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| let encryptLoginId = Encryption.encrypt(loginId, secretKey); | |
| let encryptLoginPwd = Encryption.encrypt(loginPwd, secretKey); | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: encryptLoginId, | |
| loginPwd: encryptLoginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 후kakao_connect.html
| <h2>{=__('회원 정보 확인')}</h2> | |
| <div class="box kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: loginId, | |
| loginPwd: loginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 전login.html
| <form id="formLogin" method="post" action="{loginActionUrl}"> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="returnUrl" name="returnUrl" value="{returnUrl}"/> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}"/> | |
| <input type="hidden" id="encryptFl" name="encryptFl" value="Y"/> | |
| <div class="login"> | |
| <div class="input-info"> | |
| <div> | |
| <script type="text/javascript"> | |
| var $formLogin; | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| var Encryption = { | |
| get encryptMethod() { | |
| return 'AES-256-CBC'; | |
| }, | |
| get encryptMethodLength() { | |
| var encryptMethod = this.encryptMethod; | |
| var aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt : function (string, key) { | |
| var iv = CryptoJS.lib.WordArray.random(16); | |
| var salt = CryptoJS.lib.WordArray.random(256); | |
| var iterations = 999; | |
| var encryptMethodLength = (this.encryptMethodLength/4); | |
| var hashKey = CryptoJS.PBKDF2(key, salt, {'hasher': CryptoJS.algo.SHA512, 'keySize': (encryptMethodLength/8), 'iterations': iterations}); | |
| var encrypted = CryptoJS.AES.encrypt(string, hashKey, {'mode': CryptoJS.mode.CBC, 'iv': iv}); | |
| var encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| var output = { | |
| 'ciphertext': encryptedString, | |
| 'iv': CryptoJS.enc.Hex.stringify(iv), | |
| 'salt': CryptoJS.enc.Hex.stringify(salt), | |
| 'iterations': iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| } | |
| /** | |
| * form serialize 값 변경 | |
| * | |
| * @param values 폼명 | |
| * @param k 변경할 inputName | |
| * @param v 변경할 inputValue | |
| */ | |
| function changeSerialize(values, k, v) { | |
| var found = false; | |
| for (i = 0; i < values.length && !found; i++) { | |
| if (values[i].name == k) { | |
| values[i].value = v; | |
| found = true; | |
| } | |
| } | |
| if (!found) { | |
| values.push({name: k,value: v}); | |
| } | |
| return values; | |
| } | |
| function login_fail(url, message) { | |
| $formLogin.find('.caution-msg1').removeClass('dn').text(message); | |
| setTimeout(function () { | |
| } | |
| } | |
| // 로그인 정보 암호화 처리 (보안이슈) | |
| var encryptLoginId = Encryption.encrypt($('#loginId').val(),$('#secretKey').val()); | |
| var encryptLoginPwd = Encryption.encrypt($('#loginPwd').val(),$('#secretKey').val()); | |
| var params = $(form).serializeArray(); | |
| params = changeSerialize(params, 'loginId', encryptLoginId); // 암호화 된 아이디로 변경 | |
| params = changeSerialize(params, 'loginPwd', encryptLoginPwd); // 암호화 된 패스워드로 변경 | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 후login.html
| <form id="formLogin" method="post" action="{loginActionUrl}"> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="returnUrl" name="returnUrl" value="{returnUrl}"/> | |
| <div class="login"> | |
| <div class="input-info"> | |
| <div> | |
| <script type="text/javascript"> | |
| var $formLogin; | |
| function login_fail(url, message) { | |
| $formLogin.find('.caution-msg1').removeClass('dn').text(message); | |
| setTimeout(function () { | |
| } | |
| } | |
| var params = $(form).serializeArray(); | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 전kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| let Encryption = { | |
| get encryptMethod() { | |
| return "AES-256-CBC"; | |
| }, | |
| get encryptMethodLength() { | |
| let encryptMethod = this.encryptMethod; | |
| let aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt: function (string, key) { | |
| let iv = CryptoJS.lib.WordArray.random(16); | |
| let salt = CryptoJS.lib.WordArray.random(256); | |
| let iterations = 999; | |
| let encryptMethodLength = this.encryptMethodLength / 4; | |
| let hashKey = CryptoJS.PBKDF2(key, salt, { hasher: CryptoJS.algo.SHA512, keySize: encryptMethodLength / 8, iterations: iterations }); | |
| let encrypted = CryptoJS.AES.encrypt(string, hashKey, { mode: CryptoJS.mode.CBC, iv: iv }); | |
| let encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| let output = { | |
| ciphertext: encryptedString, | |
| iv: CryptoJS.enc.Hex.stringify(iv), | |
| salt: CryptoJS.enc.Hex.stringify(salt), | |
| iterations: iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| }; | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| let secretKey = $("#secretKey").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| let encryptLoginId = Encryption.encrypt(loginId, secretKey); | |
| let encryptLoginPwd = Encryption.encrypt(loginPwd, secretKey); | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: encryptLoginId, | |
| loginPwd: encryptLoginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 후kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: loginId, | |
| loginPwd: loginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 전login.html
| <input type="hidden" name="saveFlag" value="{data.saveFlag}"/> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="isMyapp" name="isMyapp" value="{isMyapp}"/> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}"/> | |
| <input type="hidden" id="encryptFl" name="encryptFl" value="Y"/> | |
| <input type="hidden" id="encryptLoginId" name="encryptLoginId"/> | |
| <input type="hidden" id="encryptLoginPwd" name="encryptLoginPwd"/> | |
| <dl> | |
| <dt><label for="loginId">{=__('아이디')}</label></dt> | |
| <dd><input type="text" id="loginId" name="loginId" value="{data.loginId}" placeholder="{=__('아이디')}"/></dd> | |
| var $formLogin; | |
| var isMyapp = $('#isMyapp').val(); | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| var Encryption = { | |
| get encryptMethod() { | |
| return 'AES-256-CBC'; | |
| }, | |
| get encryptMethodLength() { | |
| var encryptMethod = this.encryptMethod; | |
| var aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt : function (string, key) { | |
| var iv = CryptoJS.lib.WordArray.random(16); | |
| var salt = CryptoJS.lib.WordArray.random(256); | |
| var iterations = 999; | |
| var encryptMethodLength = (this.encryptMethodLength/4); | |
| var hashKey = CryptoJS.PBKDF2(key, salt, {'hasher': CryptoJS.algo.SHA512, 'keySize': (encryptMethodLength/8), 'iterations': iterations}); | |
| var encrypted = CryptoJS.AES.encrypt(string, hashKey, {'mode': CryptoJS.mode.CBC, 'iv': iv}); | |
| var encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| var output = { | |
| 'ciphertext': encryptedString, | |
| 'iv': CryptoJS.enc.Hex.stringify(iv), | |
| 'salt': CryptoJS.enc.Hex.stringify(salt), | |
| 'iterations': iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| } | |
| /** | |
| * form serialize 값 변경 | |
| * | |
| * @param values 폼명 | |
| * @param k 변경할 inputName | |
| * @param v 변경할 inputValue | |
| */ | |
| function changeSerialize(values, k, v) { | |
| var found = false; | |
| for (i = 0; i < values.length && !found; i++) { | |
| if (values[i].name == k) { | |
| values[i].value = v; | |
| found = true; | |
| } | |
| } | |
| if (!found) { | |
| values.push({name: k,value: v}); | |
| } | |
| return values; | |
| } | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $formLogin = $('#formLogin'); | |
| required: "{=__('패스워드를 입력해주세요')}" | |
| } | |
| }, submitHandler: function (form) { | |
| // 로그인 정보 암호화 처리 (보안이슈) | |
| var encryptLoginId = Encryption.encrypt($('#loginId').val(),$('#secretKey').val()); | |
| var encryptLoginPwd = Encryption.encrypt($('#loginPwd').val(),$('#secretKey').val()); | |
| if (isMyapp) { | |
| form.encryptLoginId.value = encryptLoginId; | |
| form.encryptLoginPwd.value = encryptLoginPwd; | |
| form.target = 'ifrmProcess'; | |
| form.submit(); | |
| } else { | |
| } | |
| var params = $(form).serializeArray(); | |
| params = changeSerialize(params, 'loginId', encryptLoginId); // 암호화 된 아이디로 변경 | |
| params = changeSerialize(params, 'loginPwd', encryptLoginPwd); // 암호화 된 패스워드로 변경 | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 후login.html
| <input type="hidden" name="saveFlag" value="{data.saveFlag}"/> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="isMyapp" name="isMyapp" value="{isMyapp}"/> | |
| <dl> | |
| <dt><label for="loginId">{=__('아이디')}</label></dt> | |
| <dd><input type="text" id="loginId" name="loginId" value="{data.loginId}" placeholder="{=__('아이디')}"/></dd> | |
| var $formLogin; | |
| var isMyapp = $('#isMyapp').val(); | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $formLogin = $('#formLogin'); | |
| required: "{=__('패스워드를 입력해주세요')}" | |
| } | |
| }, submitHandler: function (form) { | |
| if (isMyapp) { | |
| form.target = 'ifrmProcess'; | |
| form.submit(); | |
| } else { | |
| } | |
| var params = $(form).serializeArray(); | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 전kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| let Encryption = { | |
| get encryptMethod() { | |
| return "AES-256-CBC"; | |
| }, | |
| get encryptMethodLength() { | |
| let encryptMethod = this.encryptMethod; | |
| let aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt: function (string, key) { | |
| let iv = CryptoJS.lib.WordArray.random(16); | |
| let salt = CryptoJS.lib.WordArray.random(256); | |
| let iterations = 999; | |
| let encryptMethodLength = this.encryptMethodLength / 4; | |
| let hashKey = CryptoJS.PBKDF2(key, salt, { hasher: CryptoJS.algo.SHA512, keySize: encryptMethodLength / 8, iterations: iterations }); | |
| let encrypted = CryptoJS.AES.encrypt(string, hashKey, { mode: CryptoJS.mode.CBC, iv: iv }); | |
| let encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| let output = { | |
| ciphertext: encryptedString, | |
| iv: CryptoJS.enc.Hex.stringify(iv), | |
| salt: CryptoJS.enc.Hex.stringify(salt), | |
| iterations: iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| }; | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| let secretKey = $("#secretKey").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| let encryptLoginId = Encryption.encrypt(loginId, secretKey); | |
| let encryptLoginPwd = Encryption.encrypt(loginPwd, secretKey); | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: encryptLoginId, | |
| loginPwd: encryptLoginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 후kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: loginId, | |
| loginPwd: loginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 전login.html
| <input type="hidden" name="saveFlag" value="{data.saveFlag}"/> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="isMyapp" name="isMyapp" value="{isMyapp}"/> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}"/> | |
| <input type="hidden" id="encryptFl" name="encryptFl" value="Y"/> | |
| <input type="hidden" id="encryptLoginId" name="encryptLoginId"/> | |
| <input type="hidden" id="encryptLoginPwd" name="encryptLoginPwd"/> | |
| <dl> | |
| <dt><label for="loginId">{=__('아이디')}</label></dt> | |
| <dd><input type="text" id="loginId" name="loginId" value="{data.loginId}" placeholder="{=__('아이디')}"/></dd> | |
| var $formLogin; | |
| var isMyapp = $('#isMyapp').val(); | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| var Encryption = { | |
| get encryptMethod() { | |
| return 'AES-256-CBC'; | |
| }, | |
| get encryptMethodLength() { | |
| var encryptMethod = this.encryptMethod; | |
| var aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt : function (string, key) { | |
| var iv = CryptoJS.lib.WordArray.random(16); | |
| var salt = CryptoJS.lib.WordArray.random(256); | |
| var iterations = 999; | |
| var encryptMethodLength = (this.encryptMethodLength/4); | |
| var hashKey = CryptoJS.PBKDF2(key, salt, {'hasher': CryptoJS.algo.SHA512, 'keySize': (encryptMethodLength/8), 'iterations': iterations}); | |
| var encrypted = CryptoJS.AES.encrypt(string, hashKey, {'mode': CryptoJS.mode.CBC, 'iv': iv}); | |
| var encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| var output = { | |
| 'ciphertext': encryptedString, | |
| 'iv': CryptoJS.enc.Hex.stringify(iv), | |
| 'salt': CryptoJS.enc.Hex.stringify(salt), | |
| 'iterations': iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| } | |
| /** | |
| * form serialize 값 변경 | |
| * | |
| * @param values 폼명 | |
| * @param k 변경할 inputName | |
| * @param v 변경할 inputValue | |
| */ | |
| function changeSerialize(values, k, v) { | |
| var found = false; | |
| for (i = 0; i < values.length && !found; i++) { | |
| if (values[i].name == k) { | |
| values[i].value = v; | |
| found = true; | |
| } | |
| } | |
| if (!found) { | |
| values.push({name: k,value: v}); | |
| } | |
| return values; | |
| } | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $formLogin = $('#formLogin'); | |
| required: "{=__('패스워드를 입력해주세요')}" | |
| } | |
| }, submitHandler: function (form) { | |
| // 로그인 정보 암호화 처리 (보안이슈) | |
| var encryptLoginId = Encryption.encrypt($('#loginId').val(),$('#secretKey').val()); | |
| var encryptLoginPwd = Encryption.encrypt($('#loginPwd').val(),$('#secretKey').val()); | |
| if (isMyapp) { | |
| form.encryptLoginId.value = encryptLoginId; | |
| form.encryptLoginPwd.value = encryptLoginPwd; | |
| form.target = 'ifrmProcess'; | |
| form.submit(); | |
| } else { | |
| } | |
| var params = $(form).serializeArray(); | |
| params = changeSerialize(params, 'loginId', encryptLoginId); // 암호화 된 아이디로 변경 | |
| params = changeSerialize(params, 'loginPwd', encryptLoginPwd); // 암호화 된 패스워드로 변경 | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 후login.html
| <input type="hidden" name="saveFlag" value="{data.saveFlag}"/> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="isMyapp" name="isMyapp" value="{isMyapp}"/> | |
| <dl> | |
| <dt><label for="loginId">{=__('아이디')}</label></dt> | |
| <dd><input type="text" id="loginId" name="loginId" value="{data.loginId}" placeholder="{=__('아이디')}"/></dd> | |
| var $formLogin; | |
| var isMyapp = $('#isMyapp').val(); | |
| $(document).ready(function () { | |
| var order_no_max_length = $('input[name=orderNo]').data('max-length'); | |
| $formLogin = $('#formLogin'); | |
| required: "{=__('패스워드를 입력해주세요')}" | |
| } | |
| }, submitHandler: function (form) { | |
| if (isMyapp) { | |
| form.target = 'ifrmProcess'; | |
| form.submit(); | |
| } else { | |
| } | |
| var params = $(form).serializeArray(); | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 전kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| let Encryption = { | |
| get encryptMethod() { | |
| return "AES-256-CBC"; | |
| }, | |
| get encryptMethodLength() { | |
| let encryptMethod = this.encryptMethod; | |
| let aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt: function (string, key) { | |
| let iv = CryptoJS.lib.WordArray.random(16); | |
| let salt = CryptoJS.lib.WordArray.random(256); | |
| let iterations = 999; | |
| let encryptMethodLength = this.encryptMethodLength / 4; | |
| let hashKey = CryptoJS.PBKDF2(key, salt, { hasher: CryptoJS.algo.SHA512, keySize: encryptMethodLength / 8, iterations: iterations }); | |
| let encrypted = CryptoJS.AES.encrypt(string, hashKey, { mode: CryptoJS.mode.CBC, iv: iv }); | |
| let encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| let output = { | |
| ciphertext: encryptedString, | |
| iv: CryptoJS.enc.Hex.stringify(iv), | |
| salt: CryptoJS.enc.Hex.stringify(salt), | |
| iterations: iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| }; | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| let secretKey = $("#secretKey").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| let encryptLoginId = Encryption.encrypt(loginId, secretKey); | |
| let encryptLoginPwd = Encryption.encrypt(loginPwd, secretKey); | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: encryptLoginId, | |
| loginPwd: encryptLoginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 후kakao_connect.html
| <!-- //member_tit --> | |
| <div class="member_cont kakao_connect"> | |
| <input type="hidden" id="token" name="token" value="{token}" /> | |
| <div class="kakao_connect_header"> | |
| <h3><b>{kakaoEmail}</b>{=__('으로 가입된 회원정보가 있습니다.')}</h3> | |
| </div> | |
| location.href = "../member/login.php"; | |
| } | |
| function connectToKakao() { | |
| let memNo = $("input[name='memNo']:checked").val(); | |
| if (!memNo) { | |
| let loginId = $("#loginId").val(); | |
| let loginPwd = $("#loginPwd").val(); | |
| let token = $("#token").val(); | |
| if (!loginId) { | |
| alert('{=__("아이디를 입력해주세요.")}'); | |
| return; | |
| } | |
| $("#connectToKakaoBtn").prop("disabled", true); | |
| $.ajax({ | |
| url: "../member/kakao_connect_ps.php", | |
| data: { | |
| memNo: memNo, | |
| loginId: loginId, | |
| loginPwd: loginPwd, | |
| token: token | |
| }, | |
| success: function (data) { | |
변경 전login.html
| <input type="hidden" name="saveFlag" value="{data.saveFlag}"/> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="isMyapp" name="isMyapp" value="{isMyapp}"/> | |
| <input type="hidden" id="secretKey" name="secretKey" value="{secretKey}"/> | |
| <input type="hidden" id="encryptFl" name="encryptFl" value="Y"/> | |
| <input type="hidden" id="encryptLoginId" name="encryptLoginId"/> | |
| <input type="hidden" id="encryptLoginPwd" name="encryptLoginPwd"/> | |
| <div class="inp_tx"> | |
| <label for="loginId" class="blind">{=__('아이디')}</label> | |
| <input type="text" id="loginId" name="loginId" value="{data.loginId}" placeholder="{=__('아이디')}"> | |
| var $formLogin; | |
| var isMyapp = $('#isMyapp').val(); | |
| /** | |
| * 로그인 정보 암호화 처리 | |
| */ | |
| var Encryption = { | |
| get encryptMethod() { | |
| return 'AES-256-CBC'; | |
| }, | |
| get encryptMethodLength() { | |
| var encryptMethod = this.encryptMethod; | |
| var aesNumber = encryptMethod.match(/\d+/)[0]; | |
| return parseInt(aesNumber); | |
| }, | |
| encrypt : function (string, key) { | |
| var iv = CryptoJS.lib.WordArray.random(16); | |
| var salt = CryptoJS.lib.WordArray.random(256); | |
| var iterations = 999; | |
| var encryptMethodLength = (this.encryptMethodLength/4); | |
| var hashKey = CryptoJS.PBKDF2(key, salt, {'hasher': CryptoJS.algo.SHA512, 'keySize': (encryptMethodLength/8), 'iterations': iterations}); | |
| var encrypted = CryptoJS.AES.encrypt(string, hashKey, {'mode': CryptoJS.mode.CBC, 'iv': iv}); | |
| var encryptedString = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); | |
| var output = { | |
| 'ciphertext': encryptedString, | |
| 'iv': CryptoJS.enc.Hex.stringify(iv), | |
| 'salt': CryptoJS.enc.Hex.stringify(salt), | |
| 'iterations': iterations | |
| }; | |
| return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(output))); | |
| } | |
| } | |
| /** | |
| * form serialize 값 변경 | |
| * | |
| * @param values 폼명 | |
| * @param k 변경할 inputName | |
| * @param v 변경할 inputValue | |
| */ | |
| function changeSerialize(values, k, v) { | |
| var found = false; | |
| for (i = 0; i < values.length && !found; i++) { | |
| if (values[i].name == k) { | |
| values[i].value = v; | |
| found = true; | |
| } | |
| } | |
| if (!found) { | |
| values.push({name: k,value: v}); | |
| } | |
| return values; | |
| } | |
| $(document).ready(function () { | |
| $formLogin = $('#formLogin'); | |
| $formLogin.validate({ | |
| required: "{=__('패스워드를 입력해주세요')}" | |
| } | |
| }, submitHandler: function (form) { | |
| // 로그인 정보 암호화 처리 (보안이슈) | |
| var encryptLoginId = Encryption.encrypt($('#loginId').val(),$('#secretKey').val()); | |
| var encryptLoginPwd = Encryption.encrypt($('#loginPwd').val(),$('#secretKey').val()); | |
| if (isMyapp) { | |
| form.encryptLoginId.value = encryptLoginId; | |
| form.encryptLoginPwd.value = encryptLoginPwd; | |
| form.target = 'ifrmProcess'; | |
| form.submit(); | |
| } else { | |
| } | |
| var params = $(form).serializeArray(); | |
| params = changeSerialize(params, 'loginId', encryptLoginId); // 암호화 된 아이디로 변경 | |
| params = changeSerialize(params, 'loginPwd', encryptLoginPwd); // 암호화 된 패스워드로 변경 | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |
변경 후login.html
| <input type="hidden" name="saveFlag" value="{data.saveFlag}"/> | |
| <input type="hidden" id="mode" name="mode" value="{modeLogin}"/> | |
| <input type="hidden" id="isMyapp" name="isMyapp" value="{isMyapp}"/> | |
| <div class="inp_tx"> | |
| <label for="loginId" class="blind">{=__('아이디')}</label> | |
| <input type="text" id="loginId" name="loginId" value="{data.loginId}" placeholder="{=__('아이디')}"> | |
| var $formLogin; | |
| var isMyapp = $('#isMyapp').val(); | |
| $(document).ready(function () { | |
| $formLogin = $('#formLogin'); | |
| $formLogin.validate({ | |
| required: "{=__('패스워드를 입력해주세요')}" | |
| } | |
| }, submitHandler: function (form) { | |
| if (isMyapp) { | |
| form.target = 'ifrmProcess'; | |
| form.submit(); | |
| } else { | |
| } | |
| var params = $(form).serializeArray(); | |
| $.post('../member/login_ps.php', params).done(function (data) { | |
| var code = data.code; | |
| var message = data.message; | |