innovationacademy-kr / our42vent

슬랙에 마구잡이로 올라오는 42 이벤트들을 한 눈에 볼 수 있는 캘린더 웹사이트

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

:bug: 이벤트 생성 client side byte 길이 검사 encoding 오류

42ghan opened this issue · comments

발생 일시

20220126

발생 위치

if (encodeURI(oneChar).length > 4) {

증상

  • 이벤트 상세정보 팝업 UI 테스트 해보려고 상세정보 max bytes(4096) 테스트하다가 오류 발견했습니다.
  • Lorem Ipsum generator 로 4096 bytes 상세설명에 넣어봤는데 바이트 수 초과됐다고 알림
    Screen Shot 2022-01-26 at 11 20 13 PM
  • 한글을 두 글자 추가했는데 한글이 1 byte 로 count
    Screen Shot 2022-01-26 at 11 22 32 PM
  • client side 에서 byte 셀 때 개행이 \r\n 두 바이트가 아니라 한 바이트로 인식 돼서 server side 에서 개행 수만큼 더 많은 byte 로 인식

재현 방법

  • 이벤트 생성 폼 input 에 max byte 이상을 넣고 생성 시도
  • encodeURI() 가 말 그대로 uri 를 encode 해주는 함수여서 문제였습니다.
  • 줄레님이 발견하신 new TextEncoder().encode(str) 으로 encoding 하니 제대로 utf-8 encoding 된 byte 개수가 세집니다.

세희님 & 줄레님이랑 같이 발견하고 제 local 에서 수정했어서 현재 열려있는 pr 수정에 같이 반영해서 push 하겠습니다.