XETOWN

질문/답변

웹에 관련된 질문과 답변을 나눌 수 있습니다.
조회 수 63 댓글 5

encodeHTML - htmlspecialchars 대용 = 일반 문자열에 적합.

removeHackTag - 태그 허용하지만 embed등 제거 = 태그가 적용되어야할 글 내용에 적합.

 

정도만 알고 있는데 뭐가 또 있을까요? 다큐멘트 모듈같은 XE 개발팀이 만든 모듈에서도 XE의 함수가 아닌 htmlspecialchars같은 내장함수들을 남발하고 있어서 혼란스럽네요.

 

XE가 이스케이프나 필터링 용도로 만들어놓은 함수는 정확히 무엇무엇이 있나요?

  • profile
    기진곰 2017.01.26 14:14:16

    encodeHTML - Security 클래스에서 제공하는 메소드입니다. Context에 들어 있는 변수들을 일괄적으로 이스케이프 처리하는 목적인데, 반환값이 따로 나오는 것도 아니고 사용 방법이나 배열 처리 문법 등의 매뉴얼화가 전혀 안 되어 있어서 사용하기가 꽤 어색합니다. 가능하면 이건 사용하지 마세요.

     

    removeHackTag - 글 내용, 댓글 내용 등 HTML 태그를 허용하면서 위험한 것만 제거하는 기능입니다.

     

    그 밖의 경우 그냥 htmlspecialchars를 쓰시면 됩니다. 필요한 기능을 정확하게 구현해 놓은 PHP 내장함수를 놔두고 굳이 성능이 떨어지는 다른 함수를 만들어 쓸 필요가 없습니다. encodeHTML을 쓸 만한 곳은 모두 htmlspecialchars로 대체할 수 있습니다. array_map과 병용하면 배열도 한꺼번에 이스케이프할 수 있습니다.

     

    그러나 htmlspecialchars 함수에 옵션으로 들어가는 3~4개의 다른 인자들 때문에 혼란스러워하시는 분들이 많아서, 라이믹스에서는 escape 함수를 별도로 제공하고 있습니다. htmlspecialchars와 같은 기능입니다.

     

    자세히 보면 removeSrcHack, blockWidgetCode 등 보안과 관련된 함수가 몇 개 더 있는데, 이건 removeHackTag 처리 과정에서 호출할 목적으로 만들어진 함수이므로 독립적으로 사용하는 것은 좋지 않습니다. XE 개발 초기에 이런 걸 클래스 안에 넣었어야 하는데 각각 전역함수로 정의하는 바람에 지저분해졌네요. (라이믹스에서는 제거됩니다.)

  • profile
    투정 2017.01.26 14:23:35
    말씀하신대로 인자들 넣는게 복잡해서(구글링해보면 추천하는 조합도 제각각ㅜㅜ) 일관성있는 encodeHTML 이용했는데 이제부터는 바꿔봐야겠네요. 체감 성능차이는 크게 없어서 그냥 썼는데...

    라이믹스도 안정화가 되면 이용해보고 싶은데 아무래도 한창 개발방향이 잡혀가는 도중인듯해서 실사용하기는 망설여지는 면이 많네요. 코드 리팩토링이 됐다는 점이 정말 매력적인데 아쉬워요.
  • profile
    기진곰 2017.01.26 14:45:29
    encodeHTML의 장점 중 하나가 '..' 문법을 사용하면 배열도 한꺼번에 이스케이프해 준다는 건데, 아까 댓글 달고 나서 라이믹스에도 똑같은 기능을 가진 array_escape 함수를 추가했습니다.

    장기적으로는 템플릿에서 {$var} 이렇게 출력하는 변수를 모두 자동으로 이스케이프해 주는 것을 고려하고 있습니다. 글 내용처럼 이미 필터링된 경우만 제외하고요. 단, 기존 스킨과 레이아웃과의 호환성도 생각해야 하기 때문에 쉽지는 않을 것 같아요.
  • profile
    투정 2017.01.26 14:28:00
    아, 그런데 혹시 XE의 htmlpurifier는 최신 버전으로 계속 패치가 되고 있는건가요?
  • profile
    기진곰 2017.01.26 14:42:03
    아뇨 ㅠㅠ

List of Articles
번호 제목 글쓴이 날짜
3841 XEDITION레이아웃 크롬과 IE에서 슬라이더 크기 차이 어떻게 맞춰주나요? 미스강 2017.01.26
3840 애드워즈 집행 해보신분 있나요 Jack 2017.01.26
3839 files내에 빈폴더 삭제하는법 9 데버 2017.01.26
3838 클플 말고 다른데 있을까요?? 1 이니그마 2017.01.26
3837 실운영서버를 Rhymix 1.8.24에서 1.8.29로 패치하려면? 2 sar**** 2017.01.26
3836 url에 xe 없애는 방법 4 데버 2017.01.26
3835 크롬 56버전부터 네이버 기본언어가 자꾸 영어로 나오는데 왜이럴까요? 기븐 2017.01.26
3834 NGINX 상에서 서브도메인 연결하려고 합니다. 3 file KSH 2017.01.26
» XE의 보안관련 함수 질문 5 투정 2017.01.26
3832 트리거 질문 드립니다. 7 구름이 2017.01.26
3831 클라우드플레어 ssl 선택적 사용 문제 3 웹지기 2017.01.26
3830 [요청드립니다]통합검색 확장모듈 목록으로 활성화 시키는 방법 3 file 네모세상 2017.01.26
3829 선배님들 도와주세요!(우분투 서버 설치 파티션 관련) 2 file 목요일같은오후 2017.01.26
3828 클라우드플레어가 적용이 안되는거 같습니다. 2 file 낙타 2017.01.26
3827 mysql > mariadb 변경 후 세션정리 먹통.... 3 해태맛동산 2017.01.26
3826 부분적 https 사용하는 사이트 앞으로 크롬에 안전하지 않은 사이트로 보여지게 되는데.. 10 웹지기 2017.01.25
3825 카페24 node.js 호스팅 사용하시거나 정보 아시는분 3 구름이 2017.01.25
3824 관리자페이지에서 회원삭제가 안되요 ㅠㅠ 민지 2017.01.25
3823 카카오톡 공유버튼 만드는데 앱스토어로 이동 되네요.. 낙타 2017.01.25
3822 geoip 사용문의 블루스카이 2017.01.25
Board Pagination Prev 1 ... 29 30 31 32 33 34 35 36 37 38 ... 226 Next
/ 226
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...