본문 바로가기

전체 글408

[Security] 시큐리티 파헤치기 (1) : DelegatingFilterProxy 🙋 들어가며 이전에 Spring Security를 너무 가볍게 공부한 것 같아서 A-Z로 다뤄보려고 합니다. 이번 편에서는 DelegatingFilterProxy에 대해서 이야기해 보겠습니다. 👩‍💼 DelegatingFilterProxy Security에서 빼놓을 수 없는 객체입니다. 이름에서 역할이 잘 명시되어 있습니다. 이름 그대로 Filter를 위임(deleagte)하는 대리자(proxy)입니다. 🤷 왜 위임하나요? 전체적인 흐름을 이해하고 왜 위임하는지 알아보겠습니다. 먼저 클라이언트의 요청이 들어오면 서블릿 컨테이너는 필터 체인을 생성합니다. 이후 요청이 필터와 서블릿을 통과하면 스프링 내부로 진입하게 됩니다. 필터 체인 : HttpServletRequest를 처리하는 서블릿과 필터를 포함하는.. 2023. 8. 2.
[Backend] 트랜잭션, 격리 수준 🙋 들어가며 데이터를 다룰 때 트랜잭션이라는 용어가 자주 등장합니다. 이번 글에서 우리는 자주 언급되는 트랜잭션이 무엇이고 특징이 어떤 것들이 있는지 알아보고, 주의할 점은 어떤 것들이 있는지 알아보겠습니다. 🤔 트랜잭션이란? 트랜잭션은 특별한 작업의 단위를 의미합니다. 어떤 특징이 있어서 단순한 작업과 다르게 표현을 하는 것일까요? 👀 특징 트랜잭션을 이야기할 때는 ACID라고 부르는 특징을 이해해야 합니다. ACID를 지키고 있는 단위를 우리는 트랜잭션이라고 부르는 것입니다. 🎭 루미큐브 루미큐브는 가장 유명한 보드게임 중 하나입니다. 이 게임은 트랜잭션의 특징과 아주 비슷합니다. 다음은 규칙입니다. 🎯 루미큐브 규칙 4가지 색을 가진 1부터 13까지 숫자가 존재한다. 필드에 제출된 숫자들은 같은 색.. 2023. 7. 27.
[Java] Hash란? (feat. Hash Collection) 🙋 들어가며 해시 브라운으로 더 유명한 해시(Hash)는 개발자라면 들어봤을 법한 이름입니다. 이번 글을 통해서 해시는 어떤 것이고 왜 사용하는지 또, 어떤 문제가 있는지 알아보겠습니다. 그리고 Java에서 제공하는 다양한 Hash Collection에 대해서도 간단히 알아보겠습니다. 🥔 Hash란? 해시란 고정된 크기로 값을 바꾸는 함수나 알고리즘 을 말합니다. 그 결과 만들어진 값을 해시 코드(hash code) 혹은 해시 값(hash value)이라고 부릅니다. 🤔 고정된 크기? 해시가 어떤 것인지 알았다면 이번에는 왜 사용하는지 에 초점을 맞춰보겠습니다. 힌트는 앞서 언급한 고정된 크기에 있습니다. 보통 책에는 어느 페이지에 어떤 내용이 있는지 담겨있는 목차가 존재합니다. 우리가 1,000 페이지.. 2023. 7. 21.
[Java] equals()와 hashCode()를 같이 재정의하자! 🙋 들어가며 오늘은 자바의 최상위 객체 Object에 equals()와 hashCode()에 대해서 이야기해 보겠습니다. 이번 글을 통해서 각 메서드를 언제, 어떻게 사용하는지 알아보고 왜 두 메서드를 같이 재정의해야 하는지 알아보겠습니다. 🟰 equals() 문자열을 비교할 때 많이 사용하는 친숙한 메서드입니다. 이 메서드를 왜 사용하는지 이해하기 위해서는 동일성과 동등성의 개념을 알아야 합니다. 간단하게 정리하면 다음과 같습니다. 그리고 이해를 위한 예시를 작성해 보겠습니다. 동일성(identity) : 같은 참조를 가진다. 동등성(equality) : 같은 값을 가진다. String str1 = new String("hejow"); String str2 = new String("hejow"); Sy.. 2023. 7. 20.
Http&Network Basic : 웹 공격 기술 (11장) 🔪 웹 공격 기술 11.1 웹 공격 기술 웹 애플리케이션 등의 리소스가 주요 타겟이다. HTTP에는 보안 기능이 없어 애플리케이션에서 모두 구현해야 한다. 변조가 가능한 요청에 공격 코드를 실어서 공격한다. 11.1.1 웹 애플리케이션에 대한 공격 패턴 공격 패턴은 능동, 수동 두 가지가 존재한다. 능동적 공격은 서버를 노리는 공격이다. 리소스에 대해 직접 실행된다. 대표적인 케이스는 SQL 인젝션과 OS 커맨드 인젝션 등이 있다. 수동적 공격은 유저를 노리는 공격이다. 함정을 이용해 유저가 공격 코드를 실행하도록 한다. 대표적인 케이스는 XSS, cross-site scripting, CSRF, Cross Site Request Forgery 등이 있다. 11.2 출력 값의 이스케이프 미비로 인한 취약.. 2023. 7. 11.
Http&Network Basic : 웹 콘텐츠에서 사용하는 기술 (10장) 😜 웹 콘텐츠에서 사용하는 기술 10.1 HTML HTML은 웹 상에서 하이퍼텍스트를 보내기 위해서 개발된 언어이다. HTML 태그로 문서를 수식한다. CSS는 보이는 외관을 변경한다. 10.2 다이나믹 HTML 정적인 HTML에서 클라이언트 사이드 스크립트를 사용해 동적으로 변경하는 기술이다. DOM을 통해서 HTML 문서를 동작시킬 수 있다. 10.3 웹 애플리케이션 웹 기능을 사용해서 제공되는 프로그램을 지칭한다. 이런 프로그램으로 생성된 콘텐츠를 동적 콘텐츠, 사전에 준비된 것은 정적 콘텐츠라고 부른다. CGI는 웹 서버가 클라이언트에서 받은 요청을 프로그램에 전달하기 위한 구조이다. 10.4 데이터 송신에 이용되는 포맷이나 언어 XML은 목적에 맞게 확장 가능한 마크업 언어로 데이터 공유에 목적.. 2023. 7. 11.