Language/Nodejs

[Node.js]에서 로그아웃 후 브라우저 캐시를 이용한 뒤로가기 방지하기

멱군 2023. 9. 9. 16:48

웹 애플리케이션을 사용하다 보면 로그아웃 후 브라우저의 뒤로가기 버튼을 통해 이전 화면을 볼 수 있는 경우가 있습니다. 이러한 상황은 보안 및 사용자 경험에 문제를 일으킬 수 있습니다. Node.js 환경에서 이를 방지하는 방법을 알아보겠습니다.

 

 

문제 상황 파악

사용자가 로그아웃을 한 후, 브라우저의 뒤로가기 버튼을 누르면 이전에 본 페이지가 캐시에서 로드됩니다. 이는 민감한 사용자 정보가 노출될 위험이 있습니다.

 

Cache-Control 헤더 설정

Cache-Control 헤더를 설정하여 브라우저에 페이지를 캐시하지 않도록 지시할 수 있습니다.

app.use(function(req, res, next) {
    res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
    res.header('Expires', '-1');
    res.header('Pragma', 'no-cache');
    next();
});

 

helmet 라이브러리 활용

helmet은 Node.js 웹 애플리케이션의 보안을 강화하는 미들웨어 모음입니다. helmet.noCache()를 사용하여 캐시 관련 헤더를 설정할 수 있습니다.

const helmet = require('helmet');
app.use(helmet.noCache());

 

로그아웃 라우터 설정

로그아웃을 수행하고 메인 페이지로 리다이렉트하면, 사용자는 로그아웃 상태로 메인 페이지를 볼 수 있습니다.

app.get('/logout', (req, res) => {
    req.logout();
    res.redirect('/');
});

 

소스코드

아래의 소스코드는 위에서 사용한 내용 전체에 대한 소스코드르를 zip으로 압축한것입니다.

index.zip
0.00MB

 

결론

Node.js 웹 애플리케이션에서 로그아웃 후 브라우저의 뒤로가기를 통한 페이지 노출을 방지하기 위해서는 적절한 캐시 헤더 설정이 필요합니다. 직접 헤더를 설정하거나, helmet과 같은 라이브러리를 활용하여 이를 쉽게 구현할 수 있습니다.