해결된 질문
작성
·
81
0
안녕하세요. 오늘도 좋은강의 정말 감사히 듣고 있습니다.
제가 웹개발자가 아니라서 정확하게는 잘 모르긴 합니다.
6-3에서 문의글 상태변경, 삭제할때 PUT, DELETE 인 http메소드를 사용하시던데
제가 알기로는 PUT, DELETE는 보안에 취약한것으로 알고 있는데 사용해도 상관은 없는지 궁금합니다.
만약 사용하지 않는다면 상태변경, 삭제할때 GET과 POST방식만으로 어떤식으로 사용해야할지 로직정도만 알려주시면 감사하겠습니다.
답변 2
1
안녕하세요! 질문 주셔서 감사합니다 😊
말씀하신 PUT, DELETE 메서드가 보안에 취약한가?에 대한 부분과 권한 인증 방식에 대해서 정리해서 안내드리겠습니다.
A1. 질문에 답변드리기 전에 먼저 짚고 넘어가야 할 점이 있습니다.
HTTP 메소드(GET, POST, PUT, DELETE 등) 자체는 보안 수준을 구분하는 기능이 아닙니다.
이 메소드들은 단지 클라이언트가 서버에 어떤 작업을 요청하고자 하는지를 표현하는 방식일 뿐입니다.
예시를 들자면, 프론트엔드에서 "이 데이터를 수정해줘"라고 요청을 보낼 때, 백엔드는 그 요청을 보고 "아, 프론트엔드가 데이터를 수정하길 원하는구나!" 하고 알아차릴 수 있도록 정해둔 약속(규칙) == PUT 메소드가 바로 HTTP 메소드입니다. 즉, PUT
, DELETE
라고 해서 특별히 더 보안에 취약하다거나 안전하다고 보기는 어렵습니다. 말 그대로 약속이니까요.
실제로 중요한 것은 어떤 메소드를 쓰는가가 아니라, 그 요청을 처리하는 서버 쪽에서 적절한 인증/인가, 권한 검사, 입력 검증, HTTPS 사용 등이 얼마나 잘 구현되어 있는가입니다.
아마 이후 챕터에서 이전에 만든 authenticateToken 함수를 사용해서 JWT 토큰 인증으로 토큰을 가진 사용자만 PUT 요청이 실제로 이뤄질 수 있도록 하는 권한 검사 기능 구현이 있을 것 입니다.
const authenticateToken = (req, res, next) => {
const token = req.cookies.token;
if (!token) {
return res.status(401).json({ message: "토큰이 없습니다." });
}
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = decoded;
next();
} catch (error) {
return res.status(403).json({ message: "유효하지 않은 토큰입니다." });
}
};
// authenticateToken을 미들웨어로 사용
router.put("/:id", authenticateToken, async (req, res)
1
안녕하세요, 인프런 AI 인턴입니다. 초보자님께서 문의하신 HTTP 메소드 PUT 및 DELETE 사용과 관련된 질문에 대해 안내 드리겠습니다.
PUT & DELETE 사용에 대한 오해
인증 및 권한 관리
대안 로직:
- 상태 변경 (State Update)
- 클라이언트가 특정 데이터를 업데이트해야 하는 요청을 /update
와 같은 엔드포인트를 통해 POST 요청으로 보내고, 서버 측에서 로직에 따라 해당 데이터를 수정합니다.
/delete
엔드포인트로 POST 요청으로 보내고, 서버에서 특정 조건을 충족하면 데이터 삭제 로직을 수행합니다.유사한 질문 및 답변을 통해 더 많은 정보를 얻으실 수 있습니다:
- RESTful API에서 DELETE 요청의 보안,
- HTTP 메소드에 대한 이해와 활용.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아아 제가 잘못 알고 있던 부분이였군요.
답변 감사합니다!