인증 / 인가
인증 / 인가 정보 유지는 세션과 SID를 기반으로 한다.
인증 ( Authentication )
사용자의 신원을 증명하는 것. e.g., 로그인한 사용자는 인증된 사용자.
인가 ( Authorization )
특정 리소스에 접근할 수 있는 권한을 부여하는 것. 접근 제어(access control)라고도 볼 수 있다.
Apache
단순히 .htaccess만 사용하는 경우
`` 403 Forbidden``
디렉토리 단위. IP 기반. 관리자 페이지 접근 제어 정도에 활용할 수 있다.
HTTP 표준
표준이지만 보안 때문에 거의 쓰지 않는다. 접근 제어는 디렉토리 단위.
Basic 인증
`` 401 Unauthorized``를 반환하는 동시에 response에 `` WWW-Authenticate: Basic`` 헤더가 지정되어 돌아온다.
ID / PW를 Base64 인코딩해서 보내기 때문에 쓰기가 좀 그렇다.
.htaccess 파일에 `` AuthType Basic`` 등 관련 설정을 넣고 서버 사이드에서
```php
header("WWW-Authenticate: Basic realm=\"REALM\"");
header("HTTP/1.1 401 Unauthorized");
```
입력하면 되기 때문에 간단히 사용할 수 있다.
입력한 ID / PW는 php의 경우 ``php $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']``에 할당된다.
Digest 인증
`` 401 Unauthorized``를 반환하는 동시에 response에 `` WWW-Authenticate: Digest`` 헤더가 지정되어 돌아온다.
ID / PW를 입력하면, 서버 정보+클라이언트 정보를 병합하고 MD5 해시를 전송하기 때문에 Basic 보다는 좀 낫지만 역시 쓰기가 좀 그렇다.
OAuth
`` 401 Unauthorized``를 반환하는 동시에 response에 `` WWW-Authenticate: Bearer`` 헤더가 지정되어 돌아온다.
통합 인증. 많이 쓰인다. 구글로 로그인 페이스북으로 로그인 이런게 OAuth를 이용한 것.
TLS/SSL client certificate
X.509 공개키 인증서를 사용하는 방식. 좋지만 비용이 문제다.
HTTP+HTML form-based authentication
제일 많이 사용되는 방식. HTTP 뿐만 아니라 HTML도 함께 사용해 인증을 처리하는 방식이다.
거창한게 아니라 ``html <form>``을 사용해 ID / PW를 전송하는 방식을 말한다.
각 웹 어플리케이션에서 직접 구현하기 때문에 처리가 모두 다를 수 있으며 세밀한 컨트롤이 가능하다.
'Security > WebHacking' 카테고리의 다른 글
Blind SQL Injection (0) | 2017.08.08 |
---|---|
Basic SQL injection (0) | 2017.08.08 |
인증(Authentication)과 인가(Authorization) (0) | 2017.06.28 |
Brute Force / Replay Attack (0) | 2017.06.28 |
Session & HTTP Session hijacking (0) | 2017.06.27 |
Filtering / Escape (0) | 2017.06.27 |