Authentication(인증)은 특정 사용자나 client의 신원을 확인하는 과정이다. 즉 그들이 주장하는 대로 실제 그들이 누구인지 확인하는 것을 뜻한다. 웹사이트는 원칙적으로 인터넷에 연결된 누구에게나 노출될 수 있는 구조로 설계되어 있다. 따라서 강력한 인증 메커니즘은 효과적인 웹 보안의 필수 요소이다.
서로 다른 종류의 인증을 다음과 같이 세 가지 요소로 분류할 수 있다.
인증 메커니즘은 이러한 요소 중 하나 이상을 확인하기 위해 다양한 기술을 사용한다.
authentication은 사용자가 실제 주장하는 사람인지 확인하는 프로세스이고, authorization은 사용자가 무언가를 할 수 있는지 확인하는 것이다.
웹 사이트나 웹 application에 있는 상황에서 authentication(인증)은 누군가 username이 Carlos123
으로 접근하는데 이게 실제 계정을 만든 사람인지를 결정한다.
Carlos123
이 인증되면, 그가 다른 사용자의 개인 정보에 접근하거나 계정을 삭제하는 등의 authorization(권한)이 있는지 결정한다.
대체로 인증 메커니즘의 대부분의 취약점은 다음 두 가지 방법 중 하나로 발생한다.
Authentication 취약점의 영향은 매우 심각할 수 있다. 공격자가 인증을 우회하거나 다른 사용자의 계정에 brute-force를 취약한 계정의 모든 데이터와 기능에 접근할 수 있다. 시스템 관리자 같이 권한이 높은 계정이 취약할 경우 전체 application을 제어하고 잠재적으로 내부 인프라의 접근 권한을 얻을 수 있다.
그리고 권한이 낮은 계정이 취약할 경우 공격자는 민감한 비즈니스 정보와 같이 공격자가 가져가면 안 되는 데이터의 접근 권한을 얻을 수 있다. 만약 계정에 민감한 데이터의 접근 권한이 없더라도 공격자가 추가적인 공격 영역을 제공하는 페이지를 추가 접근 할 수 있다. 위험도가 높은 특정 공격은 공개적으로 접근 가능한 페이지에서 불가능하지만 내부페이지에서는 가능하다.