
방문자로부터 데이터를 수집하고 그 데이터가 사용하기에 안전한지 확인하는 네 가지 단계가 있다.
먼저 브라우저가 서버로 보내는 데이터를 수집한다. 다음을 사용하여 이 작업을 할 수 있다.
페이지는 작업을 수행하는 데 필요한 값을 항상 수신하진 않으며 이로 인해 오류가 발생할 수 있다.
만약에 어떤 데이터가 옵셔널이면, 그 데이터가 제공되지 않았을 때 페이지가 사용할 디폴트값을 지정할 수 있다.
만약에 어떤 데이터가 옵셔널이 아닌데 누락되었다면 충분한 정보를 제공하지 않았다는 것을 방문자에게 알려야 한다.
PHP 페이지가 브라우저로부터 데이터를 수집하면 페이지를 실행할 때 오류가 발생하지 않도록 수신한 개별 데이터의 유효성을 검사하는 경우가 많다. 다음은 데이터를 확인하는 작업이다.
PHP는 데이터의 유효성을 검증하는 두 가지 방법을 제공한다.
페이지가 필요로 하는 모든 개별값을 수집하여 검증했다면 실행에 필요한 모든 데이터가 있는지의 여부를 결정할 수 있다.
데이터가 유효하지 않을 때 오류를 표시하는 프로세스는 쿼리 문자열과 폼이 약간 다르다.
방문자가 페이지에 제공한 데이터를 표시할 때마다 표시하기에 안전한지 확인하기 위해 이스케이핑 처리를 해야 한다. 여기에는 브라우저가 코드로 취급하는 문자(EX. < 와 > 기호)를 엔티티로 대체하는 작업이 포함된다. 엔티티는 그 문자를 HTML 코드로 실행하는 게 아니라 해당 문자를 브라우저에 표시하도록 지시한다.
데이터를 페이지에 표시하기 전에 이 단계를 수행하지 않으면 해커가 악성 자바스크립트 파일을 시행하려고 시도할 수 있다.
사용자가 URL에 사용되는 데이터를 제공한 경우, 특별한 의미를 가진 문자(ex. 슬래시 및 물음표)도 이스케이핑 처리를 해야 한다. 그렇지 않으면 웹 서버가 URL을 처리하지 못할 수도 있다.
출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022