<-->
본문 바로가기

프로그래밍/nodeJS

HTML 유효성 검증 취약점

반응형

웹사이트에 유효성 검증 기능을 적용하다가 생각해냈다.

 

 view(MVC할때 view)쪽에서 HTML Form input의 pattern을 설정하고있는데

 

<div class="container box">
  <form class="showSignUpForm" method="POST" action="/users/signUp">
      <label for="inputEmail">email</label>
      <input id="inputEmail" name="email" required pattern="[^\s@]+@[^\s@]+\.[^\s@]+">

      <label for="inputName">name</label>
      <input id="inputName" name="name" required>

      <label for="inputPassword">password</label>
      <input id="inputPassword" name="hashPassword" required>

      <button type="submit">제출</button>
  </form>
</div>

 

생각해보니까 view 파일들은 브라우저에서 소스를 확인하고 수정 할 수 있고,

 

이를 악용하면 pattern만 쏙 지워서 이상한 데이터 값을 넣을수 있겠다 싶어 테스트해봤다.

 

일반적인 상황

<input>의 pattern 속성에 막혀서 view layer에서 막힘

 

하지만 여기서 pattern 속성을 지워준다면?

 

 pattern 속성 지움

값이 데이터베이스로 넘어가 버린다.

 

원치 않은 결과가 나온다.

 

따라서

 

controller랑 model에서도 유효성 체크를 해줘야 한다!!!