2012-06-07 2 views
1

매우 작은 그룹 (50-60)의 웹 사이트를 관리하고 있습니다. 웹 사이트는 간단한 로그인을 가지고 있으며 모든 사용자 데이터는 MySQL 데이터베이스에 저장되며 사이트는 잘 알려진 웹 호텔에서 호스팅됩니다.MySQL 데이터베이스에 안전하게 연결하는 방법

이제 데이터베이스에 연결하는 방법은 각 사용자가 자신의 암호를 변경할 수 있도록 읽기 및 변경 권한이있는 데이터베이스에 지정된 단일 사용자 계정을 사용하는 것입니다. 스크립트 (mysql_conn.php)이 필요한 페이지에 포함이처럼 보이는 :

$server = "server_name"; 
$username_sql = "[email protected]"; // This format is specific for that webhotel 
$password_sql = "A_strong_password"; // Hard coded in the file 

$conn = mysql_connect($server, $username_sql, $password_sql); 
$db = mysql_select_db("user_list", $conn); 
mysql_query("SET NAMES Utf8"); 
if(!$db) { 
    echo "Error message"; 
exit(); 
} 

기술적으로 그것이 마치 마법처럼 작동하지만이 특히 암호로 갈 수있는 가장 좋은 방법입니다 모르겠어요를 . 또한 각 페이지의 끝 부분에 일종의 데이터베이스 분리가 포함되어야합니까?

+0

가능한 중복 [PHP에서 데이터베이스 암호를 보호하는 방법?] (http://stackoverflow.com/questions/97984/how-to-secure-database-passwords-in-php) – eggyal

답변

1

"dbConnection.inc.php"와 같은 파일에 로그인 데이터를 저장하지 않고 외부에서 액세스 할 수없는 디렉토리에 저장합니다.

극단적 인 경우 제공자가 .php 페이지를 일반 텍스트로 제공 할 수 있습니다. 그럴 경우 방문자가 귀하의 비밀번호를 볼 수 있습니다. 그러나 그것이 더 이상 흡수되지 않는다면 ...

3

우선 새로운 코드에는 권장되지 않습니다. PHP Introduction ot MySQL 가능한 경우 대신 PDO로 전환하는 것이 좋습니다.

둘째로 PHP에 비밀번호를 저장하는 것이 xml이나 ini 등과 같은 일반 텍스트로 저장하는 것보다 안전하고 훨씬 안전합니다. 웹 서버가 오작동하고 PHP 페이지를 제공 할 수없는 경우가 아니라면 PHP 스크립트를 직접 실행하십시오. 웹 브라우저를 통해 액세스) xml/ini 파일과 달리 암호를 노출하지 않습니다.

웹 브라우저에서 액세스 할 수없는 일부 config.php에 비밀번호를 저장하는 것을 고려하십시오 (예 : 공개 루트의 어딘가에 있음).

비밀번호를 도용 할 수있는 유일한 시나리오는 웹 서버가 해킹 당했을 때 뿐이지 만 암호화되지 않은 경우 비밀번호를 저장하는 방법과 상관없이 해킹 당할 수 있습니다.

PDO로 전환하기로 결정한 경우 PDO가 연결에 실패하면 PDOException이 표시됩니다.이 경우 오류를 표시하도록 구성된 PHP에서 사용자의 비밀번호가 공개됩니다. The related bug을 참조하십시오. 따라서주의해서 사용하십시오!

행운을 빕니다 :)

+0

감사합니다. 나는 이제 설정 파일에 민감한 데이터를 한 번 저장하고 정상적으로 작동합니다. – Sandokan

관련 문제