IT 엔지니어

서버에서 실행돼도 Server Action의 입력은 신뢰하지 마세요

08월 31일 | 조회수 56
1
1435

서버에서 실행된다는 이유만으로 Server Action이 자동으로 보호되지는 않습니다. 클라이언트는 Server Action을 네트워크로 호출하고 인수도 직접 보냅니다. 따라서 postId 같은 값은 신뢰하지 않는 입력으로 보고, 함수 안에서 현재 사용자와 대상 리소스의 권한을 확인해야 합니다. 영상의 Before는 전달받은 postId로 곧바로 게시물을 삭제합니다. After는 세션을 확인하고 게시물 소유자와 현재 사용자를 비교한 뒤 삭제합니다. '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 } }); } 버튼 숨김, 미들웨어, 레이아웃 가드는 화면 접근을 빠르게 제어하는 장치입니다. 민감한 변경을 허용할지는 Server 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.