EVAL 함수 그리고 HTML 난독화 PACKER에 대해 알아보도록 하겠습니다~
로딩이 완료된 HTML 상에는 분명히 보이는데 구글 블로그(블로거, 블로그스팟) 테마의 HTML을 아무리 살펴보아도 보이지 않는 코드가 있나요? 그것은 아마 난독화를 통해 코드가 복잡하게 되어 있을 가능성이 있답니다. 난독화는 소스코드를 복잡하게 만들어 알고리즘을 숨기기 위한 의도로 행해집니다.
위의 이미지는 CDATA 내부에 eval 함수 및 p, a, c, k, e, r 매개변수로 난독화된 코드입니다! 'eval'은 매개변수에 있는 문자열을 그대로 실행하는 자바스크립트 함수랍니다. 참고로 이 함수는 함수 호출자의 권한으로 자바스크립트를 그대로 실행하기 때문에 개발 시 절대로 추천하지 않는 방법입니다. 다만, 블로그 테마 템플릿 중에서 오래 전에 만들어지거나 해당 소스를 재사용하는 경우에 잔재가 남아있는 경우가 많습니다.
eval 함수에서 실행하는 매개변수 PACKER는 난독화 기법 중 하나인데 매개변수를 상기와 같이 p, a, c, k, e, r로 시행하는 특징이 있습니다. PACKER는 헥스 문자열로 선언한 배열 문자열과 함께 함수내부의 replace 반복으로 CDATA에서 수행할 마크업 문자열을 도출합니다.
PACKER 코드를 직접 실행하여 반환된 마크업 문자열을 확인할 수 있습니다. 이를 통해 테마에서 직접적으로 찾을 수 없던 난독화된 코드의 위치를 알 수 있습니다.