BizSpring.ai AI 모드

지식센터 / 레퍼런스

JavaScript 보안: eval 함수 대신 안전하게 함수 호출하는 방법 - BizSpring BLOG

JavaScript 보안: eval 함수 대신 안전하게 함수 호출하는 방법 - BizSpring BLOG 콘텐츠로 건너뛰기 내비게이션 메뉴 인사이트 테크 활용 방법/사례 활용 방법/사례 성공사례 성공 사례 일반 광고/마케팅 에이전시 이커머스 미디어/콘텐츠 금융/핀테

핵심 요약

  • 로거(LOGGER™)가 클릭 수 측정에 사용하던 eval 함수가 보안 취약점으로 확인되어 대체 방법을 안내하는 문서입니다.
  • eval() 대신 typeof로 함수 존재 여부를 확인한 뒤 직접 함수를 호출하는 방식으로 코드를 개선했습니다.
  • EVT, DNL, RFO, SCI, SCO 등 용도별 _trk_clickTrace() 대체 함수 적용 예시 코드를 제공합니다.
  • 이 방식은 보안성뿐 아니라 가독성과 유지보수성, 서비스 성능 향상에도 도움이 됩니다.

JavaScript 보안: eval 함수 대신 안전하게 함수 호출하는 방법 - BizSpring BLOG

콘텐츠로 건너뛰기

내비게이션 메뉴

인사이트

테크

활용 방법/사례

활용 방법/사례

성공사례

성공 사례 일반

광고/마케팅 에이전시

이커머스

미디어/콘텐츠

금융/핀테크

의료/헬스케어

통신/인터넷

뉴스/트렌드

릴리즈 노트

인터넷트렌드 ↗

웹사이트 ↗

# JavaScript 보안: eval 함수 대신 안전하게 함수 호출하는 방법

2025년 05월 13일 2025년 05월 13일

릴리즈 노트

eval 함수는 JavaScript 코드를 실행을 위해 흔히 사용되는 함수입니다. 로거에서도 특정 링크의 클릭 수 측정을 위해 eval 함수를 사용하여 데이터 수집을 실행해 왔는데요, 이 명령은 웹 취약성 점검 시 보안성이 취약한 함수로 확인이 되고 있어 개선이 필요하였습니다. 로거에서 사용중인 eval 함수 보안 개선을 위해 대체하여 사용할 수 있는 대체 함수와 안전한 코드 작성법을 안내해 드리도록 하겠습니다.

eval( ) 함수 반드시 대체해야 하나요?

eval( ) 함수는 문자열로 작성된 JavaScript 코드를 그대로 실행하기 때문에 보안에 취약하고, 예상치 못한 문제를 유발할 수 있기 때문에 대체 함수를 사용하는 것이 좋습니다.

로거 적용 기존 코드

javascript

eval('try{ _trk_clickTrace( \'EVT\', \'이벤트명 변수\' ); }catch(_e){ }');

이 코드는 추적(tracking) 함수인 _trk_clickTrace() 를 실행하기 위해 eval() 을 사용한 예입니다.

개선된 코드 (안전한 대체 방법)

javascript try { if (typeof _trk_clickTrace === 'function') { _trk_clickTrace('EVT', '이벤트명 변수'); } } catch (_e) {}

변경 포인트:

eval() 제거: 코드 실행을 문자열 형태가 아닌 직접 실행 방식으로 변경

typeof 검사: 함수 존재 여부 확인으로 안정성 확보

이렇게만 바꿔도 보안성과 가독성, 유지보수성 이 크게 향상됩니다.

로거 대체 함수 적용 예시

인자값 용도 예시

EVT 이벤트, SNS 등 링크 클릭 수 try { if(typeof _trk_clickTrace == ‘function’) { _trk_clickTrace(‘EVT’, ‘이벤트명 변수’); } } catch(_e) {}

DNL 자료별 다운로드 클릭 수 try { if(typeof _trk_clickTrace == ‘function’) { _trk_clickTrace(‘DNL’, ‘자료명 변수’); } } catch(_e) {}

RFO 외부사이트 연결 링크의 클릭 수 try { if(typeof _trk_clickTrace == ‘function’) { _trk_clickTrace(‘RFO’, ‘링크명 변수’); } } catch(_e) {}

SCI 컨텐츠(상품)별 장바구니에 담긴 수 try { if(typeof _trk_clickTrace == ‘function’) { _trk_clickTrace(‘SCI’, ‘ 컨텐츠(상품)명 변수 ‘); } } catch(_e) {}

SCO 컨텐츠(상품 별 장바구니에서 삭제된 수 try { if(typeof _trk_clickTrace == ‘function’) { _trk_clickTrace(‘SCO’, ‘ 컨텐츠(상품)명 변수 ‘); } } catch(_e) {}

Tip: typeof myFunction === 'function' 조건문은 안전하게 함수가 정의되어 있는지를 확인할 수 있는 조건문입니다.

eval( ) 함수가 보안성에 취약한 함수로 확인이 되고 있어 특별한 경우가 아니면 대체 함수로 변경하는 것이 좋습니다. eval 함수를 사용 중이시라면, 안내 드린 대체 함수로 적용하여 안전하면서도 서비스 성능에 더 유리할 수 있게 도움 되시길 바랍니다.

최신 마케팅/고객 데이터 활용 사례를 받아보실 수 있습니다.

비즈스프링 뉴스레터 구독하기 →

GEOcare V3 업데이트: 이제 GEO 분석은 자동으로, 활용은 대화로

로거(LOGGER™) 시/도 리포트 개선 안내

AIR 매체 통합 리포트, RTB 하우스 연동으로 더 완성된 광고 데이터 관리

월 33만 원으로 완성하는 광고 데이터 자동화, AIR의 새로운 요금제와 기능을 만나보세요!

새롭게 단장된 로거(LOGGER™) 웹사이트에서 데이터의 해답을 찾으세요!

AIR, 더 강력해지다! 크리테오(Criteo)와 구글 UAC광고까지 한 번에 확인하세요

[2025-09 Update]Growth Platform™ GPTs 알파버전 오픈 및 서비스 개선 안내

AIR GPTs 알파 버전 서비스 오픈 안내 : GPTs와 대화로 광고 데이터 관리의 효율성 높이기!

리액트(react) 환경에서 데이터 누락 없이 로거ASP 분석하는 법

이제 ‘틱톡’ 성과도 AIR에서 한 번에!

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 * 로 표시됩니다

이름 *

이메일 *

웹사이트

댓글 *

다음 번 댓글 작성을 위해 이 브라우저에 이름, 이메일, 그리고 웹사이트를 저장합니다.

다음에 대해 검색하기...

최신 글 둘러보기

클릭이 없는 검색에서 브랜드를 알리는 방법

기존 SEO와 무엇이 같고 무엇이 다른가

콘텐츠가 답인 걸 모르는 사람은 없습니다 — 문제는 지속입니다

광고비를 늘리지 않고 매출을 늘린 회사들은 무엇을 했나

코호트로 비교하면 광고 예산 판단이 달라집니다

GEO를 위한 글쓰기를 위한 작은 노하우

(해외동향) 광고주가 광고플랫폼 리포트에서 자체 측정으로 옮겨가고 있다.

구글애즈가 정확검색·구문검색 키워드까지 AI 모드에 노출하기 시작했다 — 자동화 상품 없이 AI 답변 화면에 들어가는 첫 실험

AI가 React 앱을 직접 디버깅 – Agent 기반 디버깅

ChatGPT 광고가 픽셀·전환 API·맞춤 오디언스를 갖췄다 — 답변 화면이 측정 가능한 광고 매체가 되는 순간

출처: https://blog.bizspring.co.kr/%eb%a6%b4%eb%a6%ac%ec%a6%88-%eb%85%b8%ed%8a%b8/eval-%ed%95%a8%ec%88%98-%eb%8c%80%ec%8b%a0-%ec%95%88%ec%a0%84%ed%95%98%ea%b2%8c-%ed%95%a8%ec%88%98-%ed%98%b8%ec%b6%9c%ed%95%98%eb%8a%94-%eb%b0%a9%eb%b2%95/

자주 묻는 질문

왜 eval 함수를 대체해야 하나요?

eval() 함수는 문자열로 작성된 JavaScript 코드를 그대로 실행하기 때문에 보안에 취약하고, 예상치 못한 문제를 유발할 수 있습니다. 웹 취약성 점검에서도 보안성이 취약한 함수로 확인되어 대체 함수 사용이 권장됩니다.

eval() 대신 어떤 코드로 바꾸면 되나요?

try-catch 문 안에서 typeof _trk_clickTrace === 'function'으로 함수 존재 여부를 확인한 뒤 직접 _trk_clickTrace()를 호출하는 방식으로 바꾸면 됩니다. eval()을 제거하고 직접 실행 방식으로 변경하는 것이 핵심입니다.

typeof 검사는 왜 필요한가요?

typeof myFunction === 'function' 조건문은 해당 함수가 실제로 정의되어 있는지 안전하게 확인할 수 있는 방법입니다. 이를 통해 안정성을 확보할 수 있습니다.

로거에서 제공하는 대체 함수 예시에는 어떤 용도들이 있나요?

EVT(이벤트/SNS 클릭 수), DNL(자료 다운로드 클릭 수), RFO(외부사이트 연결 클릭 수), SCI(장바구니 담긴 수), SCO(장바구니 삭제 수) 등 용도별 예시 코드가 제공됩니다.

코드를 바꾸면 어떤 점이 좋아지나요?

eval() 제거로 보안성이 향상되고, typeof 검사로 함수 존재 여부를 확인해 안정성을 확보할 수 있습니다. 그 결과 가독성과 유지보수성, 서비스 성능까지 함께 개선됩니다.

다른 표현: Markdown · JSON · 최종 갱신 2026-09-06