
CSRF, XSS, SQL Injection
들어가며 앞선 글에서 수백 개의 권한 데이터를 관리하는 고민을 다룬 글을 작성했다. 클라이언트 저장(쿠키, JWT, LocalStorage)의 크기와 보안 문제를 확인했고, 결국 세션 이 답이라는 결론에 도달했다. 서버에 데이터를 보관하고 클라이언트에는 20 bytes의 세션 ID만 쿠키로 전달하면 모든 문제가 해결되는 것처럼 보였다. 하지만 구현...

들어가며 앞선 글에서 수백 개의 권한 데이터를 관리하는 고민을 다룬 글을 작성했다. 클라이언트 저장(쿠키, JWT, LocalStorage)의 크기와 보안 문제를 확인했고, 결국 세션 이 답이라는 결론에 도달했다. 서버에 데이터를 보관하고 클라이언트에는 20 bytes의 세션 ID만 쿠키로 전달하면 모든 문제가 해결되는 것처럼 보였다. 하지만 구현...

들어가며 프로젝트 진행 중 별도 Web API 프로젝트에서 관리자 권한을 체크한 뒤, 다른 Web 프로젝트에서 관리자 요청들을 필터링해서 수행하고 이 권한에 따라 클라이언트 측에서도 화면 구분이 필요한 상황에 마주했다. 권한 데이터를 어떻게 저장하고 관리할지 고민하던 중, /{Area}/{Controller}/{Action} 같은 URL 형태로 수...

들어가며 업무를 하며 코드 작성중 컨벤션에 맞게 프로젝트의 Application 디렉토리에 InitializeHostedService 라는 파일이 있기에 찾아보며 만들어보고자 했다. 이 파일에서 일반적으로 StartAsync 와 StopAsync 메서드를 정의한다고 했고 여기서 CancellationToken 이라는걸 처음 보았다. 찾아보니 .NE...

들어가며 SQL Server에서 NULL 값을 대체할 때 ISNULL과 COALESCE 두 가지 선택지가 있다. 둘 다 “NULL이면 다른 값으로 바꿔줘”라는 같은 목적을 가지고 있지만, 내부 동작 방식과 세부 특성이 다르다. 단순히 “ISNULL이 빠르니까 ISNULL 쓰자”로 끝나는 게 아니다. 반환 타입 차이 때문에 예상치 못한 버그가 발생할...

들어가며 대량의 데이터를 한 번에 보여주는 건 사용자 경험에도, 서버 성능에도 좋지 않다. 237개의 게시물이 있다면 한 페이지에 10개씩 나눠서 24페이지로 보여주는 게 훨씬 낫다. 이것이 페이지네이션(Pagination) 의 핵심이다. 이 글에서는 기본적인 오프셋 페이지네이션부터 시작해서, 그 한계를 극복하는 커서 기반 방식, 그리고 유튜브나 ...

들어가며 인덱스는 SQL Server 성능 튜닝의 가장 핵심적인 요소 이다. 인덱스를 잘못 설계하면 아무리 좋은 하드웨어를 써도 쿼리가 느리고, 잘 설계하면 적은 리소스로도 빠른 응답을 얻을 수 있다. 이 글에서는 인덱스의 기본 개념부터 내부 구조(B-Tree), 실행 계획 읽는 법, 복합 인덱스 설계, 커버링 인덱스 등을 간단히 다룬다. 1...

들어가며 SQL Server를 사용하는 실무 환경에서 Stored Procedure(SP), Function, Exception Log 는 거의 필수적으로 사용된다. 단순히 SELECT 쿼리만 날리는 것과 이 세 가지를 제대로 활용하는 것은 완전히 다른 차원의 개발이다. 이 글에서는 실무에서 배운 각각의 개념부터 사용하는 방식까지 깊게 정리해보려 ...

들어가며 .NET 개발을 시작하면 반드시 마주치는 것이 바로 IIS(Internet Information Services) 이다. 처음에는 visual studio에서 “그냥 F5 누르면 실행되는데 이게 왜 필요하지?”라는 생각이 들 수 있다. 하지만 실제 서비스를 배포하려면 IIS에 대한 이해가 필수다. 이 글에서는 IIS가 무엇인지, 왜 필요한...

들어가며 Dapper는 Stack Overflow 팀이 만든 Micro ORM 이다. Entity Framework처럼 무거운 ORM 대신, SQL을 직접 작성하면서도 객체 매핑은 자동으로 해주는 가벼운 도구다. Java 개발자 관점에서 보면, Spring JDBC Template 또는 MyBatis 와 비슷한 위치에 있다. JPA처럼 SQL을 추...

들어가며 데이터베이스를 운영하다 보면 복제(Replication)라는 단어를 자주 접하게 된다. 단순히 “백업용 아닌가?”라고 생각할 수 있지만, 실제로 복제는 다양한 목적으로 사용된다. 복제를 사용하는 이유: 고가용성(High Availability) : Source 서버 장애 시 Replica로 페일오버 읽기 부하 분산 : 쓰기는 S...