곱셈추위
204
2018-11-09 08:06:27 작성 2018-11-09 08:16:52 수정됨
6
272

이정도의 방어로직이 필요한가요?


API를 테스트하고 있는데, 저희는 API를 적용시킨 곳에서 정제된 데이터를 받아옵니다.

가령 너 나쁜짓 할거냐? 라는 항목에 예 아니오를 Y/N으로 받아야하는 등 어느정도 가이드에 맞춰 데이터를 받아야합니다. (가이드 다 제공하고, 파라미터 규칙 다 나와있습니다.)

현재는 가이드를 제공하기 때문에 저희쪽에서는 받아온 값에 대해서 따로 유효성 체크를 안했었는데요.

API를 테스트할 때, Y/N으로 보내야할걸 1/2로 보내면 오류를 띄우는 식으로 하나하나 유효성 체크를 해야할까요? 아니면 가이드에 나와있으니 알아서 맞춰서 보낼거라 가정하고 처리를 안해도 되는건가요?

(유효성 체크를 2중으로 하는게 맞는지 아니면 보내는 측에서만 하면 되는지 라고 정리할 수 있겠네요)

0
0
  • 답변 6

  • 구구구구
    606
    2018-11-09 08:58:08

    2중으로 하는게 맞다고 봅니다. 데이터를 이렇게 이렇게 보내달라고 했지만 주는쪽에서 오류로 인해 잘못된 값이 들어올 가능성은 충분히 있는거니까요.

    0
  • mikiruku
    122
    2018-11-09 09:00:53

    API를 제공하는 입장이라면 파라미터에 대한 검증은 해야 한다고 생각합니다.

    사용자가 가이드 대로 정확한 데이터를 보낼거라 확신할 수 없죠.

    잘못됐을 경우 우리가 가이드한 대로 데이터를 보내지 않았다고 잘못된 처리에 대한 발뻄이 될수 있다고 생각하지 않습니다. 잘못된 input은 처리 로직을 수행하지 말아야 하죠.

    UI에서의 유효성 체크보다 서버단에서의 유효성 체크가 훨씬 쉽다고 생각합니다.

    @valid를 사용하면 정말 간단히 끝나는 문제를 왜 하실지 마실지 고민하시는지 모르겠네요.

    1
  • basscraft
    1k
    2018-11-09 09:05:41

    API를 제공하는 입장에서야 간단해 보이지만

    외부에서 사용하는 사람 입장에서는 사소한 에러도 원인을 찾지 못하는 경우가 많습니다.

    그냥 에러를 뱉어 버리는 것보다 가능하면 뭐가 잘 못되었다 정도는 알려주는 것이 쓰는 입장에서는 유용하다고 생각합니다.

    많은 API들이 Client 에게 불친절하다고 생각합니다.

    0
  • mikiruku
    122
    2018-11-09 09:08:32

    유효성 체크 안하는 API를 사용하다고 생각해봅시다.

    제가 잘못된 인자를 넣었을 경우 실행이 안되어야 하는데 실행이 되는 API입니다.

     API 호출시 엄청 신경 쓰일것 같네요.

    게다가 잘못된 인자를 넣어서 실행이 안되는 경우도 발생할 수 있는데.

    이 API는 그원인을 알려주지 않습니다.

    이런 API를 사용자가 신뢰하고 사용할 수 있을까요? 

    0
  • odyssey320
    466
    2018-11-09 10:28:35

    본문과 같은 예에서는 ok가 떨어지고 값도 의도하지않은 값이 저장될테니 당연히 유효성검사해야된다고 보고,

    유효성체크는 보내기전에는 할필요는 없고, 서버에서 일괄 체크하면 될거같네요.(물론 path param 제외)

    0
  • 곱셈추위
    204
    2018-11-09 20:15:01

    답변 감사드립니다.

    제가 직접 코드를 건드릴 수 있는 상황은 아니지만 어떠한 이유로 서버에서도 방어로직을 갖춰야하는지 확실히 어필을 해야겠습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.