Giter Site home page Giter Site logo

HTTP Method about my_study HOT 3 OPEN

Hanna922 avatar Hanna922 commented on September 24, 2024
HTTP Method

from my_study.

Comments (3)

shon5544 avatar shon5544 commented on September 24, 2024 2

1. 401 VS 403은 언제 사용해야 적절할까?

401은 인증이 안 되어있을 때, 403은 권한이 없을 때 일어나는 에러코드입니다.
제가 두 코드를 사용할 땐 다음과 같은 상황에서 사용을 해요.

  • 401: 일반적으로 모든 권한의 유저가 다할 수 있는 작업이지만 인증(authenticated)되어 있지 않으면 할 수 없는 작업에서 사용.

    • ex: 게시글 작성, 댓글 작성 등
  • 403: 해당 요청을 수행하기 위한 적절한 권한을 부여받지 못 한 경우 사용합니다.

    • ex: 다른 유저의 게시글 삭제, 수정
    • ex: 일반 유저의 어드민 api 요청 등등..
  • 403이 내포하고 있는 의미를 풀어보면 요청을 처리하기 위한 자원이 존재하지만 권한이 없어 처리하지 못한다입니다. 자원의 존재 여부는 확인이 된 거에요. 이건 취약점을 파고드려하는 공격자에게 힌트가 될 수 있어서요, 자원의 존재 여부를 숨기려고 404를 쓰는 경우도 있다고 합니다. 이렇게 가져가려면 팀 간 합의가 잘 되어야할 것 같아요. 아예 이런 경우 커스텀 상태 코드를 쓰는 것도 좋아보이네요.

충분히 401과 403 두 개가 헷갈릴 수 있다고 생각해요. 사실 401도 403으로 해석할 여지가 충분히 있으니까요. 로그인 된 일반 유저의 권한이 없다고 생각하면 401이 일어나는 상황도 충분히 403이라고 할 수 있을 것 같습니다. 그러나 이렇게 하면 클라이언트 입장에서 다음 행동을 설계할 때 헷갈릴 수 있을 것 같아요.

401이 일어났을 때의 다음 행동과 403이 일어났을 때의 다음 행동은 확실하게 다릅니다. 401이 일어났을 때는 로그인으로 리다이렉트 시켜줘야할 것이고 403이 일어났을 때는 그런 것 없이 경고문을 보여줘야할 것입니다. 그러나 모든 상황에서 403을 보내버리면 이를 핸들링해야할 클라이언트가 헷갈릴수도 있겠죠. 명확한 구분을 위해서는 저 401, 403 두 가지 상황을 확실하게 나누는 것이 맞다고 생각합니다.

2. 502 Bad Gateway는 정확히 언제 발생할까

  • MDN의 정의를 빌려서 이야기하자면, 502는 서버가 게이트웨이나 프록시 서버 역할을 하면서 업스트림 서버로부터 유효하지 않은 응답을 받을 경우 발생하는 코드입니다.
  • 대체로 리버스 프록시 역할을 해주는 nginx에서 많이 볼 수 있습니다. 관련 플러그인 설정을 잘못해서 요청을 제대로 처리할 수 없는 상황이거나 접속량이 너무 많이 일어나 감당하기 힘들 때 일어난다고 합니다.
  • 개인적인 경험으로는 전자의 경우가 더 많았던 것 같은데, 회사가 운영하는 서버의 경우 후자의 경우가 더 많을 것 같아요.
  • https://devocean.sk.com/blog/techBoardDetail.do?ID=165428
    • 관련해서 알아보다가 재밌는 글을 봤어요. 이런 경우도 있을 수 있구나 하면서 보면 재밌을 것 같아요.

from my_study.

thinkjin99 avatar thinkjin99 commented on September 24, 2024 1

공유해주신 이슈도 흥미로운 내용이내요 WAS서버와 프록시 서버 간의 커넥션 유효 시간이 달라서 502가 올 수 있다는 건 저도 첨 알았어요 ㅋㅋ

from my_study.

thinkjin99 avatar thinkjin99 commented on September 24, 2024

정리 잘해주신 것 같가요 요약하자면.
401: 유저를 인식할 수 없는 경우 로그인 에러 혹은 아예 로그인 자체가 안된 경우

403: 유저를 인식할 수 있으나 유저가 해당 작업을 위힌 권한이 부족한 경우 (타인 글 삭제)

from my_study.

Related Issues (2)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.