본문 바로가기
개발/Next.js

Next 서버 컴포넌트 이용시 보안

by 안뇽! 2024. 2. 11.
반응형

 

이 글을 읽고 기억해야 할 부분들을 메모

 

How to Think About Security in Next.js

Learn about what security protections are built-in Next.js and view a guide for auditing applications.

nextjs.org

 

보안 관련된 것은 props나 url이 아닌 cookie같은 것으로 검증하기

예를 들어 url에 isAdmin = true 같은 값을 사용하거나 로그아웃 혹은 변경사항 저장 같은 것을 수행하는데 사용되서는 안된다. 이는 클라이언트단에서 오용될 가능성이 있다. 그렇기 때문에 보안과 관련된 것들은 cookies같은 것들을 이용하는 것이 좋다.

 

클로저

서버컴포넌트에서도 클로저가 적용되고 서버액션은 클로저에서도 인코딩된다.

export default function Page() {
  const publishVersion = await getLatestVersion();
  async function publish() {
    "use server";
    if (publishVersion !== await getLatestVersion()) {
      throw new Error('The version has changed since pressing publish');
    }
    ...
  }
  return <button action={publish}>Publish</button>;
}

 

위 코드에서는 publishVersion에 대한 snapshot이 클라이언트, 서버가 실행될 때 둘 다 전송된다.

반응형