1

주제: config.php 에서 $database['password'] 노출문제

안녕하세요. 처음 글을 올리네요.
TextCube 1.7.3 을 잘 사용중입니다.

TextCube 발전에 좀 도움이 될만한게 있나 싶어
여기저기 소스를 가끔씩 뜯어 보는데요.

/blog/tc/config.php 파일안에 데이터베이스 비밀번호가
그대로 노출되어 있는게 항상 마음에 걸리네요.

웹서버가 접근할 수 있는 디렉토리(DocumentRoot) 어딘가에 이런 파일이 있는게
찜찜해서 $database[...] 설정들을 config.php 에서 따로 떼어내긴 했습니다.
아래와 같은 방법으로요.

<?php
...
require('/usr/local/etc/textcube.php');
...
?>

향후 버전에서도 이것에 관한 얘기는 없는 거 같은데요.
비밀번호를 최소한으로라도 암호화 되는 것이 안전하다고 생각해서,
고민을 좀 해보려고 하는데...

혹시 같은 생각 해보신 분 계신가요?

2

답글: config.php 에서 $database['password'] 노출문제

암호화는 어떤 알고리즘이든 기본적으로 역변환이 불가능한 알고리즘을 사용합니다. 그런데 DB에 접근하려면 원래 암호를 알아야 하는데, 그 방법이 없기 때문에 plain으로 저장합니다. 이는 텍스트큐브 뿐만 아니라 DB에 접근하는 모든 프로그램이 그렇습니다.^^

그리고 config.php 파일을 설치 중에 만들기 때문에 웹서버가 접근 가능한 위치에 있어야 하구요. 도움이 되셨으면 합니다. smile

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

3

답글: config.php 에서 $database['password'] 노출문제

config.php 파일은 외부에선 접근해봐야 보이지 않고 쉘을 따서 봐야 합니다.
로컬 퍼미션을 해커가 얻은 경우라면 모든 소스코드를 볼 수 있기 때문에 암호화 해봐야 그 암호화를 푸는 코드 역시 획득 가능합니다.
즉 DB 패스워드를 암호화 해 봐야 안정성에 차이가 없습니다.

DB 패스워드는 다른 암호화 다르게 사용하는 것을 추천하는 정도가 전부겠죠.

4

답글: config.php 에서 $database['password'] 노출문제

텍스트큐브 처음 설치할 때 DB계정에 root를 입력했었던거 같습니다.
그래서 한동안 사용하고 있다가 어느날 config.php 를 보고서는 아차 싶어서 텍스트큐브용의
계정을 별도로 만들었던 기억이 납니다.
그렇게 했었는지 기억은 안나지만, 처음 설치할 때 별도계정을 만들도록 유도하는 것도 좋은 방법인 것 같네요.

암호화에 대한 것은 특별한 방법이 없을 것 같긴 하지만,
웹경로상에 있는 것은 여전히 좀 찜찜하네요. (물론 정상적으로는 접근이 불가능하겠지만)