웹 브라우저(클라이언트)와 서버가 통신할 때 사용하는 TLS 버전은 양쪽 모두에 의해 결정됩니다. 웹 브라우저가 연결을 시도할 때 클라이언트가 지원하는 TLS 버전 목록을 알려주고, 서버는 자신이 지원하는 TLS 버전 중 매칭되는 것을 선택해 통신합니다. 일반적으로 서로가 지원 가능한 최신 버전을 사용합니다. TLS 버전 웹 브라우저 지원 버전 확인 2020년을 기점으로 크롬, 엣지, 파이어폭스 등 주요 웹 브라우저는 모두 TLS 1.0, TLS 1.1 버전의 지원을 종료했습니다. 해당 버전은 보안상 취약점이 발견됐기 때문입니다. 그래서 현재로선 그냥 TLS 1.2, TLS 1.3을 지원한다고 생각하셔도 대부분 맞습니다. 정확히 확인하고 싶으시면 아래의 링크로 들어가시면 확인 가능합니다. 접속한 웹 브라..
최상위 도메인이란? 최상위 도메인(TLD, Top Level Domain)은 인터넷 도메인 이름의 가장 오른쪽에 있는 부분으로, 웹사이트 주소의 마지막 부분에 해당합니다. 예를 들어, www.example.com에서 .com이 최상위 도메인입니다. 최상위 도메인을 보면 웹사이트의 목적, 소유자, 지리적 위치 등의 특징을 인식할 수 있습니다. 일반 최상위 도메인(gTLD) 일반 최상위 도메인(gTLD)은 전 세계적으로 사용되며, 특정 목적이나 주제와 관련되어 있습니다. .com : 상업적인 웹사이트를 위한 도메인. 예시: google.com .net : 네트워크 관련 조직을 위한 도메인. 예시: speedtest.net .org : 조직, 주로 비영리 단체를 위한 도메인. 예시: wikipedia.org ..
HTTP 상태코드를 해석하는 건 디버깅에 매우 중요합니다. http 상태코드라는 것이 클라이언트와 서버 간 상호작용에 대한 결과값을 의미하기 때문입니다. 각 상태코드의 의미를 알고 있으면 상태코드를 보자마자 대략 어떤 문제가 있는지 짐작하고 대처할 수 있습니다. HTTP 상태코드 개인적으로 처음부터 모든 상태코드를 억지로 다 외울 필요는 없다고 생각합니다. 그것보다는 우선 숫자별로 대략적인 의미를 파악하고 그 안에서도 자주 등장하는 상태코드를 하나씩 하나씩 숙지하면서 쌓아가면 됩니다. 100번대 상태코드 100번대는 클라이언트의 요청이 서버에 도달했고 서버가 프로세스를 진행하고 있다는 의미입니다. 개인적인 느낌으로 이건 딱히 자주 보는 상태코드는 아니었습니다. 200번대 상태코드 200번대는 성공의 의미..
웹 개발 시 페이지에 구현하는 문자열에 유니코드가 많이 사용됩니다. 예를 들어, 홈페이지 매뉴바에 표현되는 글자는 jsp 소스에 한글을 하드코딩하지 않고 별도 속성 파일에 해당하는 유니코드를 매핑해서 구현합니다. 아래와 같은 형식으로 하드코딩 하지 않고 홈페이지 소개 별도의 properties 파일에 아래처럼 유니코드를 매핑하고 welcome.message=\ud648\ud398\uc774\uc9c0\u0020\uc18c\uac1c jsp 소스에는 이런 식으로 값을 변환하여 최종적으로 html에 구현하는 식입니다. 이렇게 하면 사용자가 보는 화면에는 유니코드가 변환된 값이 출력되게 됩니다.
웹 서버를 수정하다 보면 웹 브라우저 상에서 수정사항이 잘 반영됐는지 확인할 일이 많습니다. 특히 CSS, JavaScript, 이미지 같은 정적 콘텐츠를 수정하고 났을 때 그냥 F5로 새로고침 하면 반영이 안 되기도 합니다. 브라우저가 이미 가지고 있는 캐시 데이터를 이용해서 화면을 로드하기 때문입니다. 캐시 데이터를 지워야 합니다. 물론 설정을 통해 데이터를 지울 수도 있지만 Ctrl + F5 키를 누르면 데이터를 이미 저장해 놓은 캐시가 아닌 서버에서 가져오도록 합니다. 서버에 반영된 최신의 리소스를 이용해서 페이지를 로드할 수 있습니다. 개발 과정에서도 많이 쓸 수 있지만, 일반 사용자들도 웹 페이지가 정상적으로 로드되지 않거나 예상대로 작동하지 않을 때 Ctrl + F5 키를 누르면 서버에서 최..
ContextPath는 특정 웹 애플리케이션을 가리키는 URL의 일부를 말합니다. 클라이언트에서 URL을 요청할 때 어떤 애플리케이션에 요청을 할지에 대한 구분이 됩니다. 예를 들어, http://www.myserver.com/mywebapp 라는 URL에서 ContextPath는 mywebapp입니다. ContextPath 자바(Java)의 서블릿 컨테이너인 톰캣(Tomcat)이나 제티(Jetty) 등에서는 각 웹 애플리케이션을 구분하기 위해 ContextPath를 사용합니다. 웹 애플리케이션에 대한 요청이 들어오면, 웹 서버는 ContextPath를 확인하고 해당 요청을 적절한 웹 애플리케이션으로 라우팅 합니다. ContextPath는 웹 서버의 설정에 따라 변경될 수 있습니다. 보통 web.xml ..
CSRF 공격 CSRF(Cross-Site Request Forgery) 공격은 웹 애플리케이션의 취약점을 이용한 공격 방식 중 하나입니다. CSRF는 피해자의 의지와는 무관하게 공격자가 의도한 행동을 실행하도록 만드는 공격입니다. CSRF 공격이 이루어지는 과정은 아래와 같습니다. 1. 공격자는 공격 대상인 웹사이트에 대한 악의적인 요청을 생성합니다. 2. 공격자는 이 요청을 피해자가 실행하게 될 수 있는 방식으로 만듭니다. 3. 피해자는 공격자가 만든 악성 코드가 포함된 웹사이트를 방문하거나 이메일 등을 열어봅니다. 이런 경우 공격이 실행됩니다. 4. 웹사이트는 이 요청을 피해자가 직접 보낸 것으로 인식하고, 요청한 작업을 수행합니다. 예시) 1. 온라인 뱅킹 사이트나 이커머스 플랫폼에서, 사용자가 ..
요즘은 웬만한 웹사이트에서는 구글 계정으로 로그인하거나 가입할 수 있습니다. 웹사이트의 자체 회원가입뿐만 아니라 구글, 페이스북, 네이버, 카카오 등의 계정으로도 간단하게 가입 또는 로그인할 수 있도록 구현하기 때문입니다. 이를 가능하게 하는 게 OAuth2.0 입니다. OAuth란? OAuth 2.0은 인터넷에서 사용자가 계정 정보를 직접 공유하지 않고도 웹사이트들이 해당 계정에 접근할 수 있게 해주는 표준 프로토콜입니다. 예를 들어, 어떤 웹사이트에 로그인할 때 해당 웹사이트는 자체적인 로그인 시스템을 만들지 않고 구글이나 페이스북 같은 이미 신뢰할 수 있고 사용자가 많은 서비스를 이용해서 인증을 처리할 수 있습니다. 사용자는 구글 또는 페이스북 아이디로 해당 사이트를 이용할 수 있습니다. 이 과정에..
HTTP 프로토콜의 Keep-Alive 기능은 클라이언트와 서버 간 요청 및 응답 과정을 효율적으로 유지하기 위해 사용됩니다. keep-alive를 활성화하면 하나의 TCP 연결을 여러 번 재사용하며 응답과 요청을 수행할 수 있습니다. Keep-Alive란? HTTP 프로토콜에서 클라이언트와 서버 간 여러 요청을 단일 TCP 연결을 재사용하는 방식으로 처리하는 기능을 말합니다. HTTP/1.1 프로토콜부터 도입됐습니다. 이 기능을 활성화하면 여러 HTTP 요청 및 응답 과정에서 발생하는 네트워크 오버헤드를 줄일 수 있습니다. keep-alive를 사용하는 경우 HTTP 요청 헤더에 Connection: Keep-Alive라는 값을 포함시킵니다. HTTP/1.1 200 OK Connection: Keep-..
SSL 인증서 적용은 암호화된 https 통신을 가능하게 합니다. SSL 인증서는 공인인증서와 사설인증서로 구분됩니다. 두 유형의 인증서가 어떤 차이가 있는지, 주로 어떤 사이트에 적용되는지 알아보겠습니다. SSL 인증서란? SSL(Secure Sockets Layer) 인증서는 웹사이트와 방문자 간의 연결을 암호화하여 안전하게 데이터를 주고받을 수 있도록 합니다. https로 시작하는 웹사이트는 SSL 인증서가 적용된 웹사이트입니다. SSL 인증서는 크게 보면 공인인증서와 사설인증서로 구분됩니다. 공인 SSL 인증서 공인 SSL 인증서는 인증 기관(CA)에서 발급하는 인증서입니다. 일반적으로 인터넷에서 접근하는 사이트들은 공인인증서가 적용되어 있다고 생각하시면 됩니다. 사용자 PC에 따로 인증서를 설치..