본문 바로가기
CS/기술 면접 대비

[백엔드 기술 면접] #5 Security

by 경험의 가치 2024. 11. 16.

#5 Security

 

Q. TLS와 mTLS의 차이에 대해서 이야기 해보아라.

A. TLS는 서버 인증을 통해 클라이언트와 서버 간의 통신을 암호화하는 프로토콜이다. mTLS는 TLS의 확장으로, 서버와 클라이언트가 서로를 인증하는 양방향 인증을 제공한다. TLS는 서버만 인증하지만, mTLS는 클라이언트도 인증하여 보안을 강화한다.

 

Q. HTTP와 HTTPS의 차이를 설명하고, HTTPS의 작동 과정에 대해서 서술해 보아라.

A. HTTP는 데이터를 평문으로 전송하는 프로토콜이며 보안에 취약하다. HTTPS는 HTTP에 TLS 암호화를 추가하여 데이터를 안전하게 전송한다. HTTPS는 클라이언트가 서버의 인증서를 검증한 후 세션 키를 생성하여 암호화된 통신을 수행한다.

 

Q. 세션과 쿠키의 차이에 대해서 설명해보아라.

A. 쿠키는 클라이언트에 저장되며, 사용자 식별 정보나 설정을 보관하는 데 사용된다. 세션은 서버에 저장되며, 사용자 상태를 관리하여 서버 측에서 사용자를 추적하고 인증한다.

 

Q. CSRF에 대해서 설명해보아라.

A. CSRF는 사용자가 의도하지 않은 요청을 서버에 전송하게 만들어 권한을 가진 사용자가 실행하는 것처럼 속이는 공격이다. 이를 방지하기 위해서는 CSRF 토큰을 사용하거나, 리퍼러 헤더를 검증하는 방법이 있다.

 

Q. JWT의 구조와 보안상의 고려사항은 무엇인가?

A. JWT는 헤더, 페이로드, 서명으로 구성되며, 기본적으로 암호화되지 않고 서명만 되어 있다. 따라서 중요한 정보를 포함하지 않도록 주의해야 하며, 토큰의 유효 기간을 짧게 설정하고, TLS를 통해 전송하여 중간자 공격을 방지해야 한다.

Q. 단방향 암호화에 대해서 설명해보아라.

A. 단방향 암호화는 데이터를 암호화한 후 원래의 데이터를 복호화할 수 없는 방식이다. 주로 해시 함수가 사용되며, 비밀번호 저장 등 복호화가 필요 없는 상황에서 사용된다.

 

Q. OWASP Top 10이란 무엇이며, 주요 취약점은 무엇인가?

A. OWASP Top 10은 웹 애플리케이션 보안에서 가장 심각한 취약점을 정리한 목록이다. 주요 취약점으로는 SQL 인젝션, XSS, CSRF, 취약한 인증 등이 있다.

 

Q. CORS란 무엇이며, preflight request란 무엇인지 설명해보아라.

A. CORS는 웹 페이지가 다른 도메인의 리소스에 접근할 수 있도록 허용하는 메커니즘이다. Preflight request는 복잡한 요청을 보내기 전에 브라우저가 서버의 허용 여부를 확인하기 위해 보내는 HTTP OPTIONS 요청이다.

 

Q. 비밀번호 암호화에 대해서 설명해보아라.

A. 비밀번호는 단방향 해시 함수를 사용해 암호화하며, 솔트 값을 추가하여 무작위성과 보안을 강화한다. 이를 통해 동일한 비밀번호라도 다른 해시 값을 갖도록 하여 공격을 방지한다.

 

Q. 서버에서 비밀 키를 어떻게 안전하게 보관할 것인지 이야기해보아라.

A. 비밀 키는 하드코딩하지 말고, 환경 변수나 AWS KMS, HashiCorp Vault와 같은 보안 저장소에 저장해야 한다. 또한, 키 접근 권한을 최소화하고, 주기적으로 키를 회전시켜 보안을 강화해야 한다.

 

Q. SQL 인젝션 공격이란 무엇이며, 이를 방지하기 위한 방법은 무엇인가?

A. SQL 인젝션은 공격자가 입력값을 통해 SQL 쿼리를 조작하여 데이터베이스에 비정상적인 접근을 시도하는 공격이다. 이를 방지하기 위해서는 Prepared Statement를 사용하고, 입력값 검증을 철저히 해야 한다.

 

Q. 백엔드 서비스에서 사용자 입력을 검증하는 중요성은 무엇이며, 이를 구현하는 방법은 무엇인가?

A. 사용자 입력 검증은 보안의 첫 단계로, 악의적인 입력을 차단하여 시스템을 보호한다. 이를 위해 서버 측에서 유효성 검사를 수행하고, 정규 표현식과 화이트리스트를 사용해 입력값을 검증해야 한다.

 

Q. OAuth가 뭔가요?

A. OAuth는 자원 소유자가 제3자 애플리케이션에 자신의 자원에 대한 제한된 접근을 허용할 수 있도록 하는 권한 부여 프레임워크이다. 사용자 비밀번호를 공유하지 않고도 안전하게 접근 권한을 부여할 수 있다.

 

Q. XSS가 뭔가요?

A. XSS는 공격자가 웹 페이지에 악성 스크립트를 삽입해 사용자의 브라우저에서 실행되도록 하는 공격이다. 이를 방지하기 위해 입력값을 철저히 필터링하고, 출력 시 이스케이프 처리를 해야 한다.

 

Q. Rainbow Table이 뭐고 이를 어케 막죠?

A. Rainbow Table은 미리 계산된 해시 값을 통해 암호를 역추적하는 공격 기법이다. 이를 막기 위해서는 솔트를 추가하여 해시 값을 다양하게 만들고, Bcrypt와 같은 느린 해시 함수를 사용하여 Rainbow Table 공격의 효율성을 낮춰야 한다.