Extra Form
PHP PHP 7.2
CMS Rhymix 2.0

별도 제작된 모듈에 {htmlspecialchars($변수 -> xxx()} 이런식으로 입력된 값을 가져오는 곳이 있는데 입력된 값의 html 코드가 그대로 노출되는것을 html 코드가 적용되게끔 {($변수 -> xxx()} 형태로 바로 사용을 하려고 합니다.

 

htmlspecialchars 사용하는 이유가 보안이슈 ( https://xetown.com/topics/1090911 ) 때문에 사용을 하는것으로 이해가 되는데요.

변수에 값을 입력하는 과정에서 보안문제가 발생하는 부분인건가요? 

 

" 간단하게 <script>alert('hi');</script> 이라는 코드를 여러분들이 지금 읽고 있는 것처럼 코드로 안보이고 이것이 실행되면, 저 코드는 보이지 않고 경고 메세지가 뜨는것이죠.

이를 활용해서 XE내부 함수를 실행하여 회원관리자 권한 탈취등 보안점에 문제가 생기게 되는것입니다....."

 

일반회원이 해당 변수에 xe 내부 함수 실행할 수 있는 코드를 집어넣어 보안 문제가 발생하는 것으로 이해가 되는데요. 해당 변수에 값을 입력할 수 있도록 권한을 준다면 {htmlspecialchars($변수 -> xxx()} 대신에 {($변수 -> xxx()} 형태로 코드를 변경해서 사용을 해도 무방할까요? 

  • profile
    템플릿에서 htmlspecialchars() 함수를 직접 사용하는 곳은 모두 과거의 유물입니다.

    {escape(변수, false)} 이렇게 escape false를 사용하면 이미 인코딩되어 있는지 확인한 후 필요한 부분만 인코딩하기 때문에, 보안을 챙기면서도 이중 인코딩 문제를 피할 수 있습니다.

    템플릿 맨 위에 <config autoescape="on" /> 설정을 추가하여 모든 변수를 일괄 처리하면 더 편리하고요.
  • profile ?
    답변감사합니다.