728x90
반응형
데이터 입력 문제를 해결하니 또 다른 문제가 발생했다.
무한정의 데이터를 받으면 서버부하는 물론이고, 공격을 받았을 때의 서버 상태를 생각해보니 제한을 걸어야 했었다.
아무래도 회사일이다 보니 이런 부분은 나 혼자 독단적으로 결정하는 게 아니기 때문에 타 부서와의 조율이 필요했다.
그렇게 해서 나온 값은 64KB였다. 64KB이상이면 데이터를 받지않고, 내부에서 따로 관리하는 log파일에만 표시하기로 했다.
원래는 이렇게 하려 했었으나 아래와 같이 하면 어떤 값을 보냈었는지 조회할 수 없기 때문에
// body값 가져오는 함수.
func bodycheck(w http.ResponseWriter, r *http.Request) ([]byte, int) {
getlength := r.ContentLength
savebody := make([]byte, getlength)
// r.Body.Read(savebody)
savebody, _ = ioutil.ReadAll(r.Body)
defer r.Body.Close()
leng := len(savebody)
if leng == 82567 {
err := errors.New("입력한 Data의 용량이 64KB 이상입니다")
senddingToPanic(err)
}
log.Println("[DEBUG]", string(savebody))
log.Println("[DEBUG] len: ", leng)
return savebody, leng
}
보냈던 값까지 조회해주기 위해 다른 함수 쪽에 적어 주었다.
func proc(inputjson *Input, w http.ResponseWriter, in string, leng int, gubun int) {
log.Println("[DEBUG] input=", in)
log.Println("[DEBUG] len=", leng)
if leng == 82567 {
err := errors.New("입력한 Data의 용량이 64KB 이상입니다")
senddingToPanic(err)
}
.....
}
그 후 내부적으로 테스트 후 개발 서버에 배포하여 테스트를 하니 결과는 성공적이였다.
그 후 퇴근을 하고, 집에 가는 길에 사내 메신저로 나에게 날아온 문자.
2021/01/12 08:11:47 [DEBUG] len= 1783071
2021/01/12 08:11:47 2021-11-18 06:08:10
2021/01/12 08:11:47 [DEBUG] 입력시간 : 2021-11-18 06:08:10 +0000 UTC
2021/01/12 08:11:47 [DEBUG] 현재 시간 : 2021-01-12 08:11:47.163864036 +0000 UTC
2021/01/12 08:11:47 [DEBUG] 파일 생성 시간 : 2021-11-18 06:08:10 +0000 UTC
데이터가 잘 들어가니 집에가서 확인보라는 것이였다.
이걸 보자마자 순간 내 뇌리를 스쳐지나간 코드....
if leng == 82567
.........................
그래서 부리나케 집으로 달려가서 코드를 수정 해주었다!
func proc(inputjson *Input, w http.ResponseWriter, in string, leng int, gubun int) {
log.Println("[DEBUG] input=", in)
log.Println("[DEBUG] len=", leng)
if leng >= 82567 {
err := errors.New("입력한 Data의 용량이 64KB 이상입니다")
senddingToPanic(err)
}
.....
}
테스팅 했을 때 저 값과 같을 때, 적을 때만 테스트하고, 어따 정신을 두었는지 저거보다 더 클 때 상황을 테스팅 하지 못했다... 좀 더 신경써서 테스팅 해야겠다는 생각이 든 하루였다.
728x90
반응형
'프로그래밍(Web) > 업무관련' 카테고리의 다른 글
[바미] Golang sarama 연동하기(http_server) (0) | 2021.02.09 |
---|---|
[바미] Golang sarama예제로 Kafka 연동하기(interceptors). (0) | 2021.02.09 |
[바미] 카프카 Invalid config, exiting abnormally에러 대처하기 (0) | 2021.02.09 |
[바미] Golang 카프카 삽질기... (0) | 2021.02.03 |
[바미] r.Body.Read()와 ioutil.ReadAll()의 차이점. (0) | 2021.01.12 |