url만 변경했더니 우리 교수님 연봉이 뜨더라니까요??

Chaeyoung·2023년 12월 17일
0

JWT 및 Passport

요번 방송통신대학교 이슈

이게 무슨 일이래

한국방송통신대학교의 개인정보 유출 사건은 웹 개발의 보안 측면에서 주목받고 있는 사례 중 하나이다. 이 사건은 지난 13년 동안 지원자들의 민감한 정보가 URL을 통해 쉽게 노출되어 있었다는 점에서 주요한 보안 이슈로 부상했다.

이러한 보안 이슈가 발생한 원인 중 하나는 URL에 접수번호가 그대로 노출되어 있어, 사용자가 이를 변경함으로써 다른 지원자의 정보에 접근할 수 있었다. 이는 개발자들이 URL을 통해 민감한 정보를 전송하거나 저장할 때 취해야 할 보안 조치가 부족했음을 시사이다.

이번 글에서는 해당 보안 이슈가 왜 발생했는지에 대한 근본적인 이유를 살펴보고, 베이비 백엔드 개발자들이 이러한 상황을 예방하고 안전한 애플리케이션을 개발하는 데 어떤 조치를 취할 수 있는지에 대해 알아보자.


1. URL 보안 강화하기:
기사에서 언급된 것처럼 URL을 통해 다른 사용자의 정보에 쉽게 접근할 수 있는 취약점을 보완하기 위해 URL에 민감한 정보를 노출하지 않도록 주의해야 한다. JWT와 Passport를 통한 안전한 사용자 인증 시스템을 구현해보자.


2. JWT(JSON Web Token) 소개:
JWT를 활용하여 효과적이고 안전한 사용자 인증을 구현하는 방법에 대해 알아보자.

const jwt = require('jsonwebtoken');

const secretKey = 'yourSecretKey';

const user = { id: 123, username: 'example' };

const token = jwt.sign(user, secretKey);

3. Passport와의 통합:
Passport는 다양한 전략을 제공하며, 그 중에서도 JWT를 사용한 인증을 적용하는 방법에 대해 살펴보자.

const passport = require('passport');
const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;

const opts = {
  jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  secretOrKey: 'yourSecretKey',
};

passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
  // 사용자 확인 및 처리 로직
}));

4. Express 애플리케이션에 적용하기:
Express 애플리케이션에 Passport 및 JWT를 통합하여 안전한 사용자 인증을 구현하는 방법에 대해 알아보자.

const express = require('express');
const passport = require('passport');

const app = express();

// Passport 초기화
app.use(passport.initialize());

// Passport JWT 미들웨어 적용
app.get('/protected-route', passport.authenticate('jwt', { session: false }), (req, res) => {
  res.json({ message: 'You accessed a protected route!' });
});

5. 기타 보안 강화 방법:
이외에도 HTTPS 사용, 토큰 유효 기간 설정 등을 통해 웹 애플리케이션의 보안을 강화하는 방법에 대해 간략히 다룬다.

마무리

부트캠프에서 코치님들을 통해 이런 경우를 들어오곤 했지만 이번 사례는 정말 개발자가 시스템 자체를 관리를 안했구나 싶은 수준이지만 댓글을 보면서 너무 당연한게 없는 곳이 있구나하는 생각이 들었다.


참고 자료 및 레퍼런스:

0개의 댓글