IT 엔지니어

Server Action 안에서도 인증과 인가를 다시 확인하세요

08월 31일 | 조회수 27
1
1435

삭제 버튼을 관리자에게만 숨겼는데, Server Action 안에는 권한 검사가 없나요? 버튼을 감추는 코드는 화면을 정리할 뿐 요청을 막지 못합니다. Server Action은 서버에서 실행되지만 클라이언트가 네트워크로 호출할 수 있는 진입점입니다. 함수에 전달된 postId 같은 값도 클라이언트가 바꿀 수 있다고 보고 처리해야 합니다. 'use server'; export async function deletePost(data) { const { postId } = deletePostSchema.parse(data); const session = await verifySession(); if (!session) throw new Error('Unauthorized'); const post = await db.post.findUnique({ where: { id: postId } }); if (!post || post.ownerId !==

) { throw new Error('Forbidden'); } await db.post.delete({ where: { id: postId } }); } 순서는 분명합니다. 먼저 입력을 검증하고 현재 세션을 확인한 다음, 그 사용자가 해당 리소스를 바꿀 권한이 있는지 검사합니다. 로그인 여부만 확인하면 다른 사용자의 postId로 요청하는 경우를 막지 못합니다. 미들웨어, 레이아웃 가드, 숨긴 버튼은 빠른 화면 제어에는 쓸 수 있습니다. 민감한 변경의 최종 보안 경계는 Server Action 내부에 두세요. 공통 검사는 Data Access Layer로 모아도 각 Action이 그 검사를 호출해야 합니다. 지금 actions 파일을 열어 세션 검사와 리소스 단위 인가가 모두 있는지 확인해 보세요. #React #Nextjs #웹보안

첨부 이미지
댓글 0
공감순
최신순
      등록된 댓글이 없습니다
      첫 댓글을 남겨주세요
추천글
대표전화 : 02-556-4202
06235 서울시 강남구 테헤란로 134, 5,6,9층
(역삼동, 포스코타워 역삼) (대표자:최재호, 송기홍)
사업자등록번호 : 211-88-81111
통신판매업 신고번호: 2016-서울강남-03104호
| 직업정보제공사업 신고번호: 서울강남 제2019-11호
| 유료직업소개사업 신고번호: 2020-3220237-14-5-00003
| 국외 유료직업소개사업 신고번호: F1200020240004
Copyright Remember & Company All rights reserved.