[php] PDO 데이터베이스 연결 문자열 보안

이번 글에서는 PHP의 PDO (PHP Data Objects)를 사용하여 데이터베이스에 연결할 때 보안을 강화하는 방법에 대해 알아보겠습니다.

1. PDO 이점

PHP에서 데이터베이스와의 상호작용을 위해 주로 사용되는 PDO는 보안, 성능, 코드 재사용성 측면에서 다른 방식보다 좋은 이점을 가지고 있습니다.

2. 연결 문자열 작성

대부분의 PHP 프로그래머들은 데이터베이스에 연결하기 위해 아래와 같은 형식의 코드를 사용합니다.

$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'username';
$password = 'password';
$conn = new PDO($dsn, $username, $password);

그러나 위의 코드는 보안상 취약점을 가지고 있습니다. 코드에 직접적으로 데이터베이스 접속 정보가 노출되어 있기 때문입니다.

3. 계정 정보 외부 파일로 분리

보안을 강화하기 위해 연결 정보를 별도의 외부 파일로 분리하는 것이 좋은 방법입니다. 이를 위해 config.ini와 같은 파일을 만들어야 합니다.

[database]
host = localhost
dbname = testdb
username = username
password = password

4. 연결 문자열 동적으로 생성

이제 PHP 코드에서는 이 정보를 읽어와서 PDO에 전달해야 합니다.

$config = parse_ini_file('config.ini');

$dsn = 'mysql:host=' . $config['host'] . ';dbname=' . $config['dbname'];
$username = $config['username'];
$password = $config['password'];

$conn = new PDO($dsn, $username, $password);

위의 코드를 통해 데이터베이스 연결 문자열이 동적으로 생성되어 중요 정보가 직접 노출되지 않게 되었습니다.

마무리

위의 방법을 통해 PDO를 사용하여 데이터베이스에 연결하는 과정에서 보안을 더 강화할 수 있습니다. 중요한 데이터베이스 접속 정보는 외부 파일로 분리하여 노출을 최소화하고 코드를 안전하게 유지할 수 있습니다.

참고문헌: PHP: PDO - Manual