브라우저로부터 데이터 가져오기(1)

minah moon·2023년 8월 10일

PHP

목록 보기
21/58
post-thumbnail

데이터를 수집하고 사용하는 네 가지 단계

방문자로부터 데이터를 수집하고 그 데이터가 사용하기에 안전한지 확인하는 네 가지 단계가 있다.

1. 데이터 수집

먼저 브라우저가 서버로 보내는 데이터를 수집한다. 다음을 사용하여 이 작업을 할 수 있다.

  • PHP 파일이 요청될 때마다 PHP 인터프리터가 생성하는 두 개의 슈퍼글로벌 배열
  • 필터 함수filter function라고 불리는 두 개의 내장 함수

페이지는 작업을 수행하는 데 필요한 값을 항상 수신하진 않으며 이로 인해 오류가 발생할 수 있다.

만약에 어떤 데이터가 옵셔널이면, 그 데이터가 제공되지 않았을 때 페이지가 사용할 디폴트값을 지정할 수 있다.

만약에 어떤 데이터가 옵셔널이 아닌데 누락되었다면 충분한 정보를 제공하지 않았다는 것을 방문자에게 알려야 한다.

2. 데이터 검증

PHP 페이지가 브라우저로부터 데이터를 수집하면 페이지를 실행할 때 오류가 발생하지 않도록 수신한 개별 데이터의 유효성을 검사하는 경우가 많다. 다음은 데이터를 확인하는 작업이다.

  • 페이지가 작업을 수행하는 데 필요한 데이터가 있는 경우. 이것을 필수 데이터required data라고 한다.
  • 올바른 형식의 데이터이어야 하는 경우. 예를 들어 페이지에서 계산을 수행하기 위해 숫자가 필요하다면 수신한 데이터가 숫자인지 확인해야 한다. 이메일 주소를 받아야 한다면 텍스트가 올바른 형식의 이메일 주소인지 확인해야 한다.

PHP는 데이터의 유효성을 검증하는 두 가지 방법을 제공한다.

  • 사용자가 직접 정의한 함수를 작성한다.
  • 필터 함수를 가지고 내장된필터를 사용한다. 각 필터는 여러 가지 데이터 타입의 유효성을 검증한다.

3. 행동 결정

페이지가 필요로 하는 모든 개별값을 수집하여 검증했다면 실행에 필요한 모든 데이터가 있는지의 여부를 결정할 수 있다.

  • 모든 데이터가 유효하다면, 데이터를 처리할 수 있다.
  • 일부 데이터가 유효하지 않거나 누락되었다면, 그 데이터를 사용해서는 안 된다. 대신에 페이지는 사용자에게 오류 메시지를 표시한다.

데이터가 유효하지 않을 때 오류를 표시하는 프로세스는 쿼리 문자열과 폼이 약간 다르다.

  • 폼 데이터가 유효하지 않다면, 유효하지 않은 데이터를 제공한 폼 컨트롤 옆에 메시지를 표시하고 다시 입력하게 할 수 있다. 사용자에게 올바른 형식의 데이터를 제공하는 방법을 메시지로 표현해야 한다.
  • 쿼리 문자열에 올바르지 않은 데이터가 있는 경우 방문자가 쿼리 문자열을 편집할 것이라고 기대해서는 안 된다. 대신에 사용자가 원하는 데이터를 요청할 수 있는 방법을 설명하는 메시지를 제공해야 한다.

4. 데이터 이스케이핑 또는 제거

방문자가 페이지에 제공한 데이터를 표시할 때마다 표시하기에 안전한지 확인하기 위해 이스케이핑 처리를 해야 한다. 여기에는 브라우저가 코드로 취급하는 문자(EX. < 와 > 기호)를 엔티티로 대체하는 작업이 포함된다. 엔티티는 그 문자를 HTML 코드로 실행하는 게 아니라 해당 문자를 브라우저에 표시하도록 지시한다.

데이터를 페이지에 표시하기 전에 이 단계를 수행하지 않으면 해커가 악성 자바스크립트 파일을 시행하려고 시도할 수 있다.

사용자가 URL에 사용되는 데이터를 제공한 경우, 특별한 의미를 가진 문자(ex. 슬래시 및 물음표)도 이스케이핑 처리를 해야 한다. 그렇지 않으면 웹 서버가 URL을 처리하지 못할 수도 있다.






출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022

0개의 댓글