개발 Q&A

제목 CI 의 view를 프레임워크없이 사용하려면 ..?
카테고리 PHP
글쓴이 JeffreyOh 작성시각 2019/07/23 11:38:05
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 9493   RSS

function view($template, $data){     extract($data);  // this pulls all of the first-level array keys out as their own separate variables     ob_start();   // this turns on **output buffering** which is the method we'll use to "capture" the contents of the view (there are surely other ways)     require $template; // you should prepend some sort of fixed path to this where all of your templates will reside     echo ob_get_flush(); // turns off output buffering, returning the buffered content as a string which we then send to the browser. } 

 

위의 구문을 구글링하여 얻었습니다.

CI에서 사용하는 View 메서드가 맞다면 extract에 의해 view페이지에서 변수화시킨 것을 쓸수 있는 것이 맞는지요?

해당 부분에 대해 구글링 해보니 보안상 취약하다는 글이 있던데

보안적인 부분에서 어떻게 해결할 수 있는지 알고싶습니다.

해결할 수 있었기에 CI에서도 저 함수를 쓰고 있다고 생각합니다.

찾아보니 4가지의 조건들 중 2가지가 있으면 취약하지 않다는 글들이 많던데

이해가 잘 안되서 질문드립니다..

 

extract 함수가 쓰여도 취약하지 않는 경우는

변수를 선언하기 전에 extract 함수를 사용하거나, 

extract 이후에 다시 변수를 덮어쓰는 코드가 존재하면 공격에 이용되기가 어려워진다.

또한 공격자가 내부 변수명을 알아야 사용이 가능하다는 점과,

EXTR_SKIP이 옵션으로 선언 된다면 취약하지 않다.

 

라는 조건들을 봤는데 해당 조건들을 검색해서 읽어봐도 잘 이해가 되지않네요..

 

프레임워크를 사용하지 않고 간단하게 view와 controller만 쪼개볼까하는데 view 메서드처럼 사용하여 쓰면 될련지... 궁금합니다

 다음글 이럴땐 어떻게 해야 하나요? (3)
 이전글 click2call.php 에 관련한 정보를 찾고 있습... (1)

댓글

한대승(불의회상) / 2019/07/23 11:54:47 / 추천 0

view()를 통하여 넘겨진 변수에 대해 extract() 를 사용하는것 맞습니다.

CI에서 제안하는 방법으로 사용하시면 안전하게 처리됩니다.

프레임워크 없이 사용한다는건 어떤 의미일까요?