배포된 애드온을 살펴보다가 한가지 의문이 생겨서 질문드립니다.
foreach($filters as $filter)
{
eval("\$arr = ".$filter.";");
if(is_array($arr)) $content = preg_replace($arr[0], $arr[1], $content);
}
위와 같은 코드에서 eval("\$arr = ".$filter.";"); 이 등장을 하는데요.
$arr = $filter; 라고 작성해야 할 것 같은데 eval() 을 사용한 이유가 어떤 건지 궁금합니다.
아니 제가 지금 모르는 부분이 있어 위와 같은 생각을 한다면
eval("\$arr = ".$filter.";"); 부분 자체가 왜 필요하지?? 라는 생각을 하게 되네요.
if(is_arra($filter)) 로 하면 되는거 아닌가? 하는 생각도 듭니다.
eval("\$arr = ".$filter.";"); 요게 등장해야 하는 이유가 뭔가요?
예상대로 eval() 함수부분 없이 작동은 안하네요.
$filter 부분에 PHP 코드를 직접 입력해도 그대로 실행되도록 하려고 한 것 같은데요.
관리자만 입력할 수 있는 설정이라면 보안상 문제가 되지는 않겠지만,
보안과 관련없이 eval()은 원칙적으로 모두 잘못되었다고 생각하셔도 무방합니다.
사용자에게서 어떤 형태의 데이터를 입력받아서 어떻게 해석하여 어떤 자료구조로 저장할 것인지
꼼꼼하게 따져서 설계하지 않고 그냥 코드 실행으로 퉁치려고 했다는 뜻이니까요.