더북(TheBook)

CSRF는 사용자가 의도치 않게 공격자가 의도한 행동을 하게 만드는 공격입니다. 예를 들어, 특정 페이지에 방문할 때 저절로 로그아웃되거나 게시글이 써지는 현상을 유도할 수 있습니다. 심지어 은행과 같은 사이트에서는 다른 사람에게 송금하는 행동을 넣는 등 상황에 따라 크게 악용될 수 있는 공격입니다.

이 공격을 막으려면 내가 한 행동이 내가 한 것이 맞다는 사실을 인증해야 합니다. 이때 CSRF 토큰이 사용되고, csurf 패키지는 이 토큰을 쉽게 발급하거나 검증할 수 있도록 돕습니다.

다음 코드는 공식 문서에서 발췌한 예제입니다. GET /form 라우터는 form을 렌더링하는 라우터이고, POST /form 라우터는 form에서 보낸 데이터를 처리하는 라우터입니다.

const csrf = require('csurf');
const csrfProtection = csrf({ cookie: true });

app.get('/form', csrfProtection, (req, res) => {
  res.render('csrf', { csrfToken: req.csrfToken() });
});

app.post('/form', csrfProtection, (req, res) => {
  res.send('ok');
});
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.