확장변수(textarea)에서 html 사용하려고 아래 팁을 php버젼만 서로 다른 원본사이트와 복제사이트에 각각 적용을 해보았습니다.

 

xe_version : 1.9.7 / php : 5.5.9-1ubuntu4.22 / db_type : mysqli_innodb

 xe_version : 1.9.7 /  php : 7.0.0p1 / db_type : mysqli

 

php : 5.5.9-1가 깔린 사이트에서는 팁이 정상작동되는데 이상하게 php7.0이 깔린 사이트에서만 아래팁을 적용해보면 백지화면이 뜨는데 원인을 잘모르겠습니다.

 

https://xe1.xpressengine.com/tip/19233419 

/xe/classes/extravar/Extravar.class.php 

283번째 라인부터 다음과 같이 수정합니다.

 

[ 원본 ]

    //case 'date' :
            //case 'email_address' :
            
//case 'text' :
            //case 'textarea' :
            default :
                return htmlspecialchars($value, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
        }
    }

 

[ 수정 적용 팁 ]

 //case 'date' :
            //case 'email_address' :
            //case 'text' :
                          default :
                        return htmlspecialchars($value);
                    break;
                //case 'textarea' :
                default :
                        return ($value);
                    break;
            }
        }

  • profile
    백지현상은 php 500에러 일 가능성이 큽니다. 해당 오류메세지를 함께 재공해주시면 어디부분인지 확인이 가능할 것 같습니다.
  • profile
    그리고.. 코드상에서 보면 default 가 두개씩 있네요.

    스위치에는 기본값으로 지정되는 것이 1개 있어야 합니다.
  • profile
    그리고, 확장변수 같은 입력값들에게 HTML작성을 막은 이유가 다 있습니다.

    이패치를 적용하여 사용하여 생겨나는 해킹과 관련된 모든 책임은 사용자에게 있어요.. 이거 명심하고 쓰시길..
  • profile ?
    보안에 문제가 있을 소지가 있다면 해당 팁을 사용하지 않는걸로 해야 겠습니다.
    답변감사합니다. ^^
  • ? profile
    해당 확장변수 입력값에 HTML을 허용하게 되면 관리자 탈취할 수 잇는 심각한 보안위협에 노출되기 때문에 쓰지 않는것이 좋습니다.
  • profile
    dbconfig 에서 디비타입에 i만 더 붙여주면 되지 않나요?
  • profile profile
    해당오류는 php mysql함수가 사라져서 생긴오류가 아닌것같아요.

    좀더까다로워진 언어규칙때문인것같아요