본문 바로가기

공부/TIL

유저에게 받는 정보 (validation)에대한 의문

일을 하다보면 쉽게 볼 수 있는 코드가 있습니다

<input type="text" name="id" maxlength="3">

사용자로부터 input을 받는데, id를 받는다고 가정합니다.

이 아이디는 중복되지 않으면서, 아이디의 조건을 갖춰야 하죠 (validation은 사람마다 다를 수 있으니 논외)

validation을 거쳐야 될 텐데 정규 표현식을 사용해서 주로 해결하곤 했습니다.

이때, 글자 수에 대한 고민이 생겼습니다.

 

만약 아이디가 세 글자를 넘기지 말아야 한다고 가정했을 때 maxlength 속성을 사용하게 되면

input에 3글자 이상 들어가지 않습니다. 저는 이 방식이 좋다고 생각합니다.

리모컨이 있는데, 그 리모컨에 '폭파'라는 버튼이 있다고 가정해 볼 때, 사용자가 버튼을 눌러서 폭파되었으면

그건 폭파라는 버튼을 누른 사용자 책임일까요? 만든 사람 잘못일까요?에서 저는 만든 사람의 책임이 더 크다고 생각하기 때문입니다.

maxlength 속성을 사용한다면 애초에 3글자 이상을 입력하지 않을 테니 validation을 덜 거쳐도 되지 않나 생각이 들었어요.

 

그런데 주변에선 보통 한 작업단 위로 묶으니까 validation 하는 김에 글자 수도 보고, 특수문자도 보고 한다고 하더군요.

유저는 어떠한 잘못된 방법으로 입력할지 모르는데 그걸 맞게 들어왔나 검사하는 것보단 애초에 못 들어오게 막는 게 맞지 않나 생각이 듭니다.

 

잘못된 생각일 수도 초보적인 생각일 수도 있으나, maxlength 속성을 보니 너무 꽂힌 거 같습니다. 쓰는 사람을 본 적은 없는데도요

 

 

<input type="number>

type 넘버 박스에선 maxlength 속성이 사용조차 안 돼서 자바 스크립트로 함수 또는 min 속성과 max 속성을 사용하는 코드를 찾았음에도 불구하고요

 

예상되는 사용하지 않는이유

1)HTML은 구조를 담당하는 역할이기때문에 validation은 스크립트에서 한다.

2)속성이 적용되지 않는 상황이 발생할 수 있다

 

---

 

 

 

 

하드 코딩하는 사람들 , OKKY에서 답변을 받아서 첨부합니다

 

maxlength 어트리뷰트를 사용하더라도, 사용자가 개발자도구에서 maxlength를 변경시키고 전송시킬 가능성이 있다(정규식에서 8글자 제한 코드를 삭제하였을떄)

 

발생될 수 있는 문제점: 아이디 제한이 8글자인데 긴 글자 아이디를 만들 수도있다.

 

js로 value값을 변경시키면 html 속성은 무시가된다

 

방어코드를 사용하기때문에 의미가 없어진다.

 

 

 

 

결론

 

 

1. 방어 코드를 사용해야 되기 때문에 의미 x
2. 한글에서 문제가 발생할 수 있음(테스트 중)

반응형

'공부 > TIL' 카테고리의 다른 글

letter-spacing  (0) 2020.02.28
github branch 작업(생성 ~ 삭제)  (0) 2020.02.17
sass를 사용하고나서 느낀점  (0) 2020.02.11
객체지향  (0) 2020.01.27
깃허브 협업  (0) 2020.01.21