본문 바로가기
Web Security

[APMSetup] php.ini를 수정하여 사용자의 입력값을 자동으로 escape하기

by blackjack_96 2022. 3. 5.

# [APMSetup] php.ini를 수정하여 사용자의 입력값을 자동으로 escape

 

 

APMSetup이라는 웹 서버 프로그램에서

사용자의 입력값 (GET parameter, POST parameter, COOKIE)을 자동으로 escape하는 방법을 알아보겠습니다.

 

1. APMSetup에서의 Escape기능

 

APMSetup에서는

사용자의 입력 값으로부터 위험한 특수문자가 유입 될 경우,

(예를 들면 Single/Double quoter, Back Slash)

이러한 특수문자들이 특정 역할을 수행하여 보안 공격의 빌미를 제공할 수 있기 때문에

자동으로 입력값에서 이러한 문자들을 찾아내고

이들을 무효화 처리 해주는 기능을 제공하고 있습니다.

 

 

APMSetup 디렉토리

위에 보시는 바와 같이,

APMSetup의 디렉토리 내에

php.ini라는 설정파일이 있습니다.

 

 

php.ini란,

APMSetup을 이용하여 웹 서버를 운영할 때

PHP관련된 여러 설정사항들이 함축되어 있는 파일입니다.

 

 

APMSetup은 웹 서버를 구동시키기 전

php.ini파일을 확인하여

여러 설정들을 확인하고

여기에 설정된 대로 웹 서버를 운영하게 되는 것입니다.

 

 

php.ini파일을 열고

밑으로 쭉 내리다가 보면

아래와 같이 magic_quotes_gpc라는 옵션이 있습니다.

 

 

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=\

라고 입력을 해보면

 

test.php

Back Slash를 하나만 입력했음에도 불구하고

GET Method로 유입되는 사용자의 입력 데이터의 escape가 자동으로 일어나

하나의 Back Slash가 더 붙게 되었습니다.

 

 

이렇게 SQL Injection등의 공격을 자동으로 방지해 주는 옵션이므로

보통은 이 설정을 ON으로 하여 웹 서버를 운용합니다.