본문 바로가기
IT라이프

[PHP 보안] 2. 웹 어플리케이션 보안

by zairan 2015. 5. 9.


1.  우선 기본이 되는 것은 폼 검증이다.


 - 필수입력 항목 체크

 - 입력내용 체크

 - 유효 입력 범위 체크

 - 제외해야 할 입력 체크


2. php DocumentRoot 권한 설정


3. 스크립트 삽입공격


- 바이러스를 설치하기 위한 리다이렉트

 - 쿠키값을 뽑아내, 사이트 관리자권한으로 들어오기


GET 으로 들어온 값을 문자열을 이스케이프 시킨다.

htmlspecialchars(get_post_data($id), ENT_QUOTES, 'UTF-8');


4. XSS (Cross Site Scripting)


복수개의 사이트에서 악성코드 실행을 시킴으로써 공격하는 방법.

- 취약성

  GET 으로 javascript 코드를 삽입시켜 실행시켜버림.

  GET 으로 들어온 값을 바로 쓰지말고, htmlspecialchars($_GET['id'], ENT_QUOTES, 'UTF-8') 시켜 출력


5. CSRF (Corss Site Request Forgeries)


유저권한으로 강제로 조작하는 공격. 권한 체크(로그인 체크)만으로는 막을 수 없다.

원타임 토큰을 발행하거나  (CRUD)시에 매번 패스워드를 체크하는 방법이 있다.

form 을 보낼때 hidden 요소로 토큰을 셋팅하여 보낸다. 처리할때는 토큰을 체크하여 실행하고 실행한 후에는

토큰을 리셋시킨다. 토큰을 배열에 저장한 후에 요청이 왔을때 배열안을 조사하면 되겠다.


서버에서 토큰 발행(나중에 비교하기 위해 세션에 저장) -> 화면 폼에 셋팅 -> 요청 -> 서버에 있던 토큰과 비교하여 일치하면 실행 -> 토큰 삭제


$key = 'tokens/' . $form_name;

$this->session->get($key, array());


5. SQL injection


프리페어드 스테이트멘트를 이용하는 방법으로 대책.

PDO (PHP Data Objects) 를 이용하는 방법 등이 있다.

반응형

댓글