입력값 검증 (Input Validation)
쉽게 풀면
공항 보안검색대에서 승객의 짐을 x-ray로 확인해 위험물이 있는지 점검하는 것과 비슷합니다. 웹사이트나 프로그램은 사용자가 입력한 이름, 이메일, 검색어 등을 그대로 믿고 처리하면 위험할 수 있어, 먼저 그 값이 형식에 맞는지, 길이가 적절한지, 허용되지 않는 특수문자나 명령어가 섞여 있지 않은지를 검사합니다. 이 검증 절차를 제대로 하지 않으면 공격자가 조작된 입력값을 이용해 시스템을 오작동시키거나 원치 않는 명령을 실행시킬 수 있습니다.
왜 중요한가
SQL 인젝션, 크로스 사이트 스크립팅 등 웹 애플리케이션 보안에서 다루는 다수의 주요 취약점이 부적절한 입력값 검증에서 비롯되기 때문에, 이는 웹 보안의 가장 기초적이면서도 중요한 방어선으로 연구됩니다. 안전한 소프트웨어 개발 방법론이나 보안 코딩 가이드라인에서도 핵심 항목으로 다루어집니다.
논문에서는 이렇게 쓰입니다
코드를 실행하지 않고도 입력값 검증이 부족한 부분을 자동으로 찾아내는 연구 방법을 다룬 사례입니다.
사용자 화면에서 이루어지는 검증만으로는 충분하지 않으며 서버에서도 반드시 재검증이 필요하다는 점을 보여주는 연구입니다.
조금 더 깊게 보면
입력값 검증은 허용된 값의 목록만 통과시키는 화이트리스트 방식과, 알려진 위험 패턴을 걸러내는 블랙리스트 방식으로 나눌 수 있으며, 일반적으로 화이트리스트 방식이 더 안전한 접근으로 여겨집니다. 또한 검증은 사용자 화면(클라이언트)뿐 아니라 서버 쪽에서도 반드시 수행되어야 하며, 데이터의 형식, 길이, 범위, 유형을 종합적으로 검사하는 것이 일반적인 원칙으로 연구됩니다.
주의할 점
클라이언트 측에서만 이루어지는 검증은 사용자가 브라우저 개발자 도구 등으로 손쉽게 우회할 수 있으므로 보안 목적의 검증으로는 신뢰할 수 없습니다. 서버 측 검증이 반드시 병행되어야 실질적인 보호 효과를 기대할 수 있습니다.