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) 를 이용하는 방법 등이 있다.
'IT라이프' 카테고리의 다른 글
Laravel 5 루트 설정 (0) | 2015.05.30 |
---|---|
[PHP 보안] 2. 웹 어플리케이션 보안 (2) (0) | 2015.05.09 |
[PHP 보안] 1. 로그인 (0) | 2015.05.01 |
안드로이드 액션바 감추기 (0) | 2014.06.11 |
구글 안드로이드 추천 디자인 레이아웃 (0) | 2014.06.11 |
댓글