kcaptcha 부분의 주민번호처럼 13자리수 오인탐지 보안관련 문의드립니다. 채택완료
아래와 같은 보안조취사항을 전달받았습니다.
보드는 그누보드5 최신버전을 사용하고 있습니다.
아래와 같이 타임 스탬프 데이터가 주민번호로 오인탐지 되고 있어 확인 및 조치
탐지유형 : 개인정보유입탐지 탐지근거 : 주민등록번호 : 171223####### 위험도 : 보통 조치 : 탐지 URL : https://도메인/plugin/kcaptcha/kcaptcha_images.php
GET /plugin/kcaptcha/kcaptcha_images.php?t=1712233387317 HTTP/1.1
위와 같은 조취 권고사항을 받았습니다.
kcaptcha_images.php 의 t 변수 자릿수가 주민번호와 동일한 숫자 13자리여서 주민번호로 오인탐지 보안 오류가 생긴것 같습니다.
위 t 변수 자리수를 주민번호와 동일한 13자리가 아닌 10자리나 그이상 자릿수로 수정하려면 어느 부분을 수정해야 하는지 문의드립니다.
감사합니다.
답변 3개
plugin\kcaptcha\kcaptcha.js
파일 열어서
</p>
<p>var mp3_url = ""; </p>
<p>요기에 추가 </p>
<p>let random_number = Math.floor(Math.random() * 1000);</p>
<p> </p>
<p>캡차 getTime() 뒤에 + random_number 추가 해주세요</p>
<p>$('#captcha_img').attr('src', g5_captcha_url+'/kcaptcha_image.php?t=' + (new Date).getTime() + random_number);</p>
<p>
풀코드입니다.
</p>
<p>$(function(){</p>
<p> var mp3_url = "";</p>
<p> let random_number = Math.floor(Math.random() * 1000);</p>
<p> </p>
<p> $(document).on( "click", "#captcha_reload", function(){</p>
<p> $.ajax({</p>
<p> type: 'POST',</p>
<p> url: g5_captcha_url+'/kcaptcha_session.php',</p>
<p> cache: false,</p>
<p> async: false,</p>
<p> success: function(text) {</p>
<p> $('#captcha_img').attr('src', g5_captcha_url+'/kcaptcha_image.php?t=' + (new Date).getTime() + random_number);</p>
<p> }</p>
<p> });</p>
<p> </p>
<p> $.ajax({</p>
<p> type: 'POST',</p>
<p> url: g5_captcha_url+'/kcaptcha_mp3.php',</p>
<p> cache: false,</p>
<p> async: false,</p>
<p> success: function(url) {</p>
<p> if (url) {</p>
<p> mp3_url = url + "?t="+new Date().getTime() + random_number;</p>
<p> $("#captcha_audio").attr("src", mp3_url);</p>
<p> }</p>
<p> }</p>
<p> });</p>
<p> });</p>
<p> </p>
<p> $(document).on( "click", "#captcha_mp3", function(){</p>
<p> $("body").css("cursor", "wait");</p>
<p> </p>
<p> $.ajax({</p>
<p> type: 'POST',</p>
<p> url: g5_captcha_url+'/kcaptcha_mp3.php',</p>
<p> cache: false,</p>
<p> async: false,</p>
<p> success: function(url) {</p>
<p> if (url) {</p>
<p> mp3_url = url + "?t="+new Date().getTime() + random_number;</p>
<p> }</p>
<p> }</p>
<p> });</p>
<p> </p>
<p> var html5use = false;</p>
<p> var html5audio = document.createElement("audio");</p>
<p> if (html5audio.canPlayType && html5audio.canPlayType("audio/mpeg")) {</p>
<p> var wav = new Audio(mp3_url);</p>
<p> wav.id = "mp3_audio";</p>
<p> wav.autoplay = true;</p>
<p> wav.controls = false;</p>
<p> wav.autobuffer = false;</p>
<p> wav.loop = false;</p>
<p> </p>
<p> if ($("#mp3_audio").length) $("#mp3_audio").remove();</p>
<p> $("#captcha_mp3").after(wav);</p>
<p> </p>
<p> html5use = true;</p>
<p> }</p>
<p> </p>
<p> if (!html5use) {</p>
<p> var object = '<object id="mp3_object" classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" height="0" width="0" style="width:0; height:0;">';</p>
<p> object += '<param name="AutoStart" value="1" />';</p>
<p> object += '<param name="Volume" value="0" />';</p>
<p> object += '<param name="PlayCount" value="1" />';</p>
<p> object += '<param name="FileName" value="' + mp3_url + '" />';</p>
<p> object += '<embed id="mp3_embed" src="' + mp3_url + '" autoplay="true" hidden="true" volume="100" type="audio/x-wav" style="display:inline;" />';</p>
<p> object += '</object>';</p>
<p> if ($("#mp3_object").length)</p>
<p> $("#mp3_object").remove();</p>
<p> $("#captcha_mp3").after(object);</p>
<p> }</p>
<p> </p>
<p> $("body").css("cursor", "default");</p>
<p> return false;</p>
<p> </p>
<p> }).css('cursor', 'pointer');</p>
<p> </p>
<p> $("#captcha_reload").trigger("click");</p>
<p>});</p>
<p> </p>
<p>// 출력된 캡챠이미지의 키값과 입력한 키값이 같은지 비교한다.</p>
<p>function chk_captcha()</p>
<p>{</p>
<p> var captcha_result = false;</p>
<p> var captcha_key = document.getElementById('captcha_key');</p>
<p> $.ajax({</p>
<p> type: 'POST',</p>
<p> url: g5_captcha_url+'/kcaptcha_result.php',</p>
<p> data: {</p>
<p> 'captcha_key': captcha_key.value</p>
<p> },</p>
<p> cache: false,</p>
<p> async: false,</p>
<p> success: function(text) {</p>
<p> captcha_result = text;</p>
<p> }</p>
<p> });</p>
<p> </p>
<p> if (!captcha_result) {</p>
<p> alert('자동등록방지 입력 글자가 틀렸거나 입력 횟수가 넘었습니다.\n\n새로고침을 클릭하여 다시 입력해 주십시오.');</p>
<p> captcha_key.select();</p>
<p> captcha_key.focus();</p>
<p> return false;</p>
<p> }</p>
<p> </p>
<p> return true;</p>
<p>}</p>
<p>
이렇게 변경하시면 랜덤값이 추가로 붙어서 원하시는데로 됩니다.
회원가입도 잘되는거 방금 테스트 했습니다.


댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인