encodeHTML - htmlspecialchars 대용 = 일반 문자열에 적합.
removeHackTag - 태그 허용하지만 embed등 제거 = 태그가 적용되어야할 글 내용에 적합.
정도만 알고 있는데 뭐가 또 있을까요? 다큐멘트 모듈같은 XE 개발팀이 만든 모듈에서도 XE의 함수가 아닌 htmlspecialchars같은 내장함수들을 남발하고 있어서 혼란스럽네요.
XE가 이스케이프나 필터링 용도로 만들어놓은 함수는 정확히 무엇무엇이 있나요?
encodeHTML - Security 클래스에서 제공하는 메소드입니다. Context에 들어 있는 변수들을 일괄적으로 이스케이프 처리하는 목적인데, 반환값이 따로 나오는 것도 아니고 사용 방법이나 배열 처리 문법 등의 매뉴얼화가 전혀 안 되어 있어서 사용하기가 꽤 어색합니다. 가능하면 이건 사용하지 마세요.
removeHackTag - 글 내용, 댓글 내용 등 HTML 태그를 허용하면서 위험한 것만 제거하는 기능입니다.
그 밖의 경우 그냥 htmlspecialchars를 쓰시면 됩니다. 필요한 기능을 정확하게 구현해 놓은 PHP 내장함수를 놔두고 굳이 성능이 떨어지는 다른 함수를 만들어 쓸 필요가 없습니다. encodeHTML을 쓸 만한 곳은 모두 htmlspecialchars로 대체할 수 있습니다. array_map과 병용하면 배열도 한꺼번에 이스케이프할 수 있습니다.
그러나 htmlspecialchars 함수에 옵션으로 들어가는 3~4개의 다른 인자들 때문에 혼란스러워하시는 분들이 많아서, 라이믹스에서는 escape 함수를 별도로 제공하고 있습니다. htmlspecialchars와 같은 기능입니다.
자세히 보면 removeSrcHack, blockWidgetCode 등 보안과 관련된 함수가 몇 개 더 있는데, 이건 removeHackTag 처리 과정에서 호출할 목적으로 만들어진 함수이므로 독립적으로 사용하는 것은 좋지 않습니다. XE 개발 초기에 이런 걸 클래스 안에 넣었어야 하는데 각각 전역함수로 정의하는 바람에 지저분해졌네요. (라이믹스에서는 제거됩니다.)