안전하지 않은 애플리케이션은 사용자와 시스템을 다양한 유형의 손상에 노출할 수 있습니다. 악의적인 당사자가 취약점 또는 보안 기능 부족을 이용하여 피해를 입히는 것을 공격이라고 합니다. 애플리케이션 보안을 설정할 때 주의해야 할 사항을 알 수 있도록 이 가이드에서는 다양한 유형의 공격을 살펴봅니다.
능동적 공격과 수동 공격 비교
공격은 능동적 공격과 수동 공격이라는 두 가지 유형으로 나눌 수 있습니다.
진행 중인 공격
공격자는 능동적 공격을 통해 애플리케이션에 직접 침입하려고 시도합니다. 거짓 ID를 사용하여 민감한 정보에 액세스 (매스커레이드 공격)하는 것부터 서버에 대량의 트래픽을 넘겨 애플리케이션이 응답하지 않게 만드는 것 (서비스 거부 공격) 등 다양한 방법이 있습니다.
진행 중인 공격은 전송 중인 데이터에도 적용될 수 있습니다. 공격자는 사용자 브라우저에 도달하기 전에 애플리케이션 데이터를 수정하여 사이트에 수정된 정보를 표시하거나 사용자를 의도하지 않은 도착 페이지로 유도할 수 있습니다. 이를 메시지 수정이라고도 합니다.
수동적 공격
수동 공격을 통해 공격자는 애플리케이션에서 정보를 수집하거나 학습하려고 하지만 애플리케이션 자체에는 영향을 미치지 않습니다.
누군가가 친구나 가족과의 대화를 도청하면서 내 사생활, 친구가 누구인지, 어디에 어울리는지에 대한 정보를 수집한다고 상상해 보세요. 웹 트래픽에서도 같은 일이 일어날 수 있습니다. 공격자는 사용자 이름과 비밀번호, 사용자의 방문 기록, 교환되는 데이터를 수집하여 브라우저와 서버 간에 데이터를 캡처할 수 있습니다.
공격 방어
공격자는 개발자나 사용자가 알지 못하는 사이에 애플리케이션에 직접 해를 끼치거나 사이트에서 악의적인 작업을 수행할 수 있습니다. 공격을 감지하고 방어하기 위한 메커니즘이 필요합니다.
안타깝게도 애플리케이션을 100% 안전하게 보호할 수 있는 단일 솔루션은 없습니다. 실제로 공격을 방지하거나 더 지연시키기 위해 많은 보안 기능과 기술이 레이어에 사용됩니다 (이를 심층 방어라고 함). 애플리케이션에 양식이 포함되어 있으면 브라우저, 서버, 마지막으로 데이터베이스에서 입력을 확인할 수 있습니다. 또한 HTTPS를 사용하여 전송 중인 데이터를 보호할 수 있습니다.
마무리
많은 공격이 서버에 침투하지 않고 발생할 수 있으므로 공격이 진행 중인지 감지하기 어려울 때가 있습니다. 좋은 소식은 웹 브라우저에는 강력한 보안 기능이 이미 내장되어 있다는 것입니다. 자세한 내용은 다음 주제 '브라우저가 공격을 완화하는 방법'을 참고하세요.