# [APMSetup] php.ini를 수정하여 사용자의 입력값을 자동으로 escape
APMSetup이라는 웹 서버 프로그램에서
사용자의 입력값 (GET parameter, POST parameter, COOKIE)을 자동으로 escape하는 방법을 알아보겠습니다.
1. APMSetup에서의 Escape기능
APMSetup에서는
사용자의 입력 값으로부터 위험한 특수문자가 유입 될 경우,
(예를 들면 Single/Double quoter, Back Slash)
이러한 특수문자들이 특정 역할을 수행하여 보안 공격의 빌미를 제공할 수 있기 때문에
자동으로 입력값에서 이러한 문자들을 찾아내고
이들을 무효화 처리 해주는 기능을 제공하고 있습니다.
위에 보시는 바와 같이,
APMSetup의 디렉토리 내에
php.ini라는 설정파일이 있습니다.
php.ini란,
APMSetup을 이용하여 웹 서버를 운영할 때
PHP관련된 여러 설정사항들이 함축되어 있는 파일입니다.
APMSetup은 웹 서버를 구동시키기 전
php.ini파일을 확인하여
여러 설정들을 확인하고
여기에 설정된 대로 웹 서버를 운영하게 되는 것입니다.
php.ini파일을 열고
밑으로 쭉 내리다가 보면
아래와 같이 magic_quotes_gpc라는 옵션이 있습니다.
gpc란
GET, POST, COOKIE의 약자입니다.
사용자의 입력값이 서버로 전달될 수 있는 수단은
GET,POST,COOKIE가 대표적이죠.
GET,POST,COOKIE로 들어오는
사용자 입력값으로부터
특수문자가 유입 될 경우
자동으로 이러한 특수문자에 대한 escape를 하도록 설정해주는 옵션입니다.
현재는 ON으로 되어 있는데,
정말 자동으로 escaping을 해주는지 테스트 해 봅시다
2. magic_quotes_gpc = ON 옵션 테스트
APMSetup의 default Web Document Root인 htdocs 디렉토리에 다음과 같은 파일을 만들어 봅시다
test.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to my page</title>
</head>
<body>
<?php
echo "<p>{$_GET['value']}</p>";
?>
</body>
</html>
동작은 간단합니다.
사용자로부터 GET메소드로 데이터를 입력받아
출력시켜주는 기능입니다.
127.0.0.1?value=\
라고 입력을 해보면
Back Slash를 하나만 입력했음에도 불구하고
GET Method로 유입되는 사용자의 입력 데이터의 escape가 자동으로 일어나
하나의 Back Slash가 더 붙게 되었습니다.
이렇게 SQL Injection등의 공격을 자동으로 방지해 주는 옵션이므로
보통은 이 설정을 ON으로 하여 웹 서버를 운용합니다.
'Web Security' 카테고리의 다른 글
Spring Security와 h2를 사용 시 왜 X-Frame-Options헤더를 지정해야 하는가 (0) | 2024.07.30 |
---|---|
[2] HTTPS 프로토콜 쉽게 이해하기 - 인증서의 개념 (0) | 2024.05.02 |
[1] HTTPS 프로토콜 쉽게 이해하기 - 대칭 키와 비대칭 키 (0) | 2024.05.01 |