본문 바로가기
728x90

Web17

Servlet 해당 글은 tomcat 10.0.23에서 사용하고 있는 servlet 5.0을 기준으로 작성되었습니다. 서블릿과 CGI WS를 사용하면 정적인 파일을 응답할 수 있지만 동적인 콘텐츠 생성하거나 사용자가 입력한 데이터를 저장할 수 없다. 이 문제를 해결하기 위해 CGI가 등장했고 자바 진영에서는 Servlet이 등장했다. 서블릿은 CGI에 비해 다음과 같은 이점을 가진다. 1. CGI는 프로세스 단위로 실행된다. 이 때문에 요청당 하나의 스레드를 사용하는 서블릿에 비해 서버에 더 많은 부하를 준다. 2. 서블릿은 자바로 작성되었고 JVM상에서 동작하기 때문에 플랫폼에 의존적이지 않다. 3. 자바에서 구현된 표준 라이브러리들을 그대로 사용해 DB에 접근하거나 소켓을 통해 다른 소프트웨어와 통신할 수 있다. .. 2022. 9. 10.
Proof Key for Code Exchange(PKCE) 프로젝트에서 OAuth 로그인을 구현하기 위해 OAuth 플로우를 찾아보던 중 여러 플로우가 존재하는 것을 알게 되었다. 그 중, 이번 프로젝트에 사용할 방식인 PKCE를 정리해보려 한다. PKCE는 클라이언트가 네이티브 앱이나 SPA일때 추천되는 방식이다. 퍼블릭 클라이언트가 엑세스 토큰을 요청했을 때, 인증 절차만으로는 해결할 수 없는 보안 문제에 노출된다. 이는 네이티브앱과 SPA가 가진 특징 때문이다. 네이티브 앱들은 다음과 같은 문제를 가지고 있다. 1. client secret을 안전하게 저장할 수 없다. 앱을 디컴파일링 하면 클라이언트 암호가 노출된다. 2. Custom URL scheme을 통해 리다이렉트를 캡쳐해 악의적 애플리케이션이 인증 서버에서 인증 코드를 받을 수 있다. SPA는 다.. 2022. 7. 10.
HTTPS 기존 HTTP는 클라이언트, 서버 사이의 요청, 응답을 평문으로 전송하기 때문에 중간에 이런 데이터들을 가로채서 볼 수 있었다(와이어샤크 등을 통해). 이런 문제를 해결하기 위해 클라리언트, 서버는 암호화 통신 채널을 설정하고 여기서 평문 HTTP 메시지를 선송해 정보 유출을 막는데 이것이 HTTPS이다. 이런 암호화채널을 SSL(Secure Socket Layer)라고 하며 이를 개선한 것이 TLS(Transport Layer Security)이다. SSL은 넷스케이프가 개발한 프로토콜이고, TLS는 IETF표준이다. 현재 SSL의 모든 버전은 여러가지 보안 문제가 존재하기 때문에 사용되지 않는다. 그 대신 TLS를 사용한다. HTTP/2를 사용하는 웹사이트가 많아지고 있고 HTTP/2에서 보안 연결을.. 2021. 10. 8.
프론트에서 안전하게 JWT 인증 방식 처리하기. XSS(Cross-Site Scripting) 공격자가 클라이언트 브리우저에 js를 삽입해 실행하는 공격이다. input tag를 통해 또는 url을 통해 js를 적어 클라이언트에서 실행이 가능하다면 사이트에 스크립트를 삽입해 xss공격을 할 수 있다. 공격자는 이를 이용해 사이트의 글로벌 변수값을 가져오거나 또는 그 값을 이용해 API 요청을 보낼 수 있다. 사용자가 글을 읽고, 쓰는 게시판에서 많이 발생 하지만 사용자의 입력 값을 보여주는 곳에서도 발생 한다. XSS공격은 다음과 같은 종류가 있다. 1. Persistent XSS 지속적인 피해를 입히는 XSS공격이다. 공격자는 XSS취약점이 있는 곳을 파악해 스크립트를 삽입한다. 삽입된 스크립트는 DB에 서장되고, 저장된 스크립트가 있는 게시글 등을.. 2021. 9. 5.
728x90