본문 바로가기

backend8

[Backend/API] 파일과 이미지 업로드 보안을 설계하는 기준 Backend 앱 API나 CMS에서 파일과 이미지 업로드 기능은 자주 필요합니다. 프로필 이미지, 게시글 첨부 이미지, 배너 이미지, 문의 첨부 파일처럼 사용자나 관리자가 파일을 올리는 경우는 생각보다 많고, 업로드는 단순히 파일을 받아 저장하는 기능이 아니기 때문에 보안 검수가 꼭 필요한 영역입니다.파일 업로드에서 가장 위험한 실수는 클라이언트가 보낸 파일명, 확장자, MIME 타입, 저장 경로를 그대로 믿는 것입니다. 이미지라고 생각하고 받았는데 실제로는 실행 가능한 파일이거나, 내부 저장 경로가 응답에 노출되거나, 너무 큰 파일이 서버 자원을 과도하게 사용할 수 있습니다.업로드 기능은 정상 케이스만 보면 단순하게 느껴질 수 있습니다. 막상 정리해보면 실패 케이스와 악의적인 입력을 어떻게 제한할지가.. 2026. 5. 21.
[Backend/API] 관리자 인증과 앱 토큰 인증을 분리하는 기준 Backend/CMS 프로젝트에서는 관리자 화면과 모바일 앱 API가 같은 서버 안에 있는 경우가 많습니다. 관리자 화면은 운영자가 로그인해서 데이터를 등록하고 수정하는 공간이고, 앱 API는 모바일 앱이 공개 데이터나 사용자별 데이터를 조회하는 인터페이스입니다. 둘 다 인증이 필요할 수 있지만 인증의 목적과 방식은 다릅니다.관리자 인증과 앱 토큰 인증을 분리하지 않으면 보안 경계가 흐려질 수 있습니다. 관리자 세션이 앱 API에서 그대로 통과되거나, 앱 토큰이 관리자 기능에 접근할 수 있으면 큰 문제가 됩니다. 또한 인증 실패와 권한 부족 오류가 뒤섞이면 앱에서 재로그인, 권한 안내, 일반 오류를 구분하기 어렵습니다.처음에는 같은 서버에서 같은 user table을 쓰기 때문에 인증도 비슷하게 처리할 .. 2026. 5. 21.
[Backend/API] Backend 앱 API에서 오류 응답 형식을 고정하는 기준 API를 만들 때 성공 응답은 비교적 신경을 많이 쓰게 됩니다. data, meta, DTO, pagination 같은 구조를 맞추고, 앱 화면에서 사용하기 좋은 형태로 응답을 정리하죠.그런데 오류 응답은 생각보다 뒤로 밀리기 쉽습니다. 인증 실패, 권한 부족, 유효성 검증 실패, rate limit, 서버 오류가 모두 다른 형식으로 반환되면 모바일 앱은 오류 처리를 안정적으로 만들기 어렵습니다.앱 API에서는 오류 응답도 하나의 계약입니다. HTTP status만 맞추는 것으로 끝나지 않고, 앱이 화면 안내, 재로그인, 입력값 표시, 재시도, 고객센터 문의 같은 흐름을 만들 수 있도록 JSON 구조를 고정해야 합니다.처음에는 오류 상황마다 필요한 메시지만 내려주면 충분해 보일 수 있습니다. 하지만 실제.. 2026. 5. 21.
[Backend/CMS] CMS를 Next.js로 전환할 때 API 경계를 유지하는 기준 기존 Backend/CMS 프로젝트를 Next.js로 전환하려고 할 때 가장 헷갈리는 부분은 화면과 API 사이의 경계를 어디에서 나눌지 정하는 일입니다. 관리자 CMS 화면을 Next.js로 바꾸거나, 앱 API 앞단에 BFF를 두는 구조를 검토하다 보면 기존 Laravel/PHP API, 관리자 route, 앱 API 응답 계약이 한꺼번에 흔들릴 수 있습니다.이때 중요한 기준은 기존 앱 API 계약을 쉽게 깨지 않는 것입니다. 모바일 앱은 이미 배포된 버전이 있을 수 있고, 모든 사용자가 동시에 업데이트될 수 있는 것도 아닙니다. 그래서 CMS 화면을 Next.js로 바꾸더라도 앱 API의 DTO, 인증, 캐시, versioning 경계는 분리해서 유지해야 합니다.처음에는 Next.js로 화면을 옮기.. 2026. 5. 21.
[Backend/API] 캐시와 rate limit을 설계하는 기준 Backend 앱 API를 운영하다 보면 같은 콘텐츠를 여러 사용자가 반복해서 조회하는 경우가 많습니다. 공지사항, 배너, 카테고리, 관광지 목록처럼 공개 데이터는 매번 DB에서 조회하지 않아도 되는 경우가 많죠. 이럴 때 캐시를 사용하면 응답 속도를 개선하고 DB 부하를 줄일 수 있습니다.반대로 요청이 너무 많이 들어오는 상황도 생각해야 합니다. 검색 API를 짧은 시간에 반복 호출하거나, 봇이 목록 API를 과도하게 요청하면 서버 자원을 빠르게 소모할 수 있습니다. 이때 rate limit을 적용하면 일정 기준을 넘는 요청을 제한할 수 있습니다.처음에는 캐시는 성능을 빠르게 만드는 기능, rate limit은 요청을 막는 기능 정도로만 생각하기 쉽습니다. 하지만 실제로 정리해보면 캐시와 rate li.. 2026. 5. 21.
[Backend/API] 목록 조회 pagination, search, filter를 설계하는 기준 Backend 앱 API에서 목록 조회는 거의 모든 서비스에 들어가는 기본 기능입니다. 공지 목록, 관광지 목록, 게시글 목록, 배너 목록처럼 앱 화면은 대부분 목록 데이터를 받아서 렌더링합니다. 그런데 pagination, search, filter, sort 기준을 처음부터 정하지 않으면 API마다 파라미터 이름과 응답 구조가 달라지기 쉽습니다.처음에는 page, keyword 정도만 받아도 충분해 보입니다. 하지만 앱이 커지면 정렬 기준, 카테고리 필터, 지역 필터, 공개 상태, hasNext, limit 제한, 빈 결과 처리까지 함께 봐야 합니다.특히 관리자 CMS 목록 조회와 앱 API 목록 조회는 목적이 다릅니다. 같은 query를 그대로 쓰면 내부 필드나 DB 컬럼 기준이 앱에 노출될 수 있.. 2026. 5. 20.