저는 현재 교회의 대학 그룹 웹 사이트에서 일하고 있습니다. 제가 쓰고있는 것에 대한 보안에 대해 조금 걱정하기 시작했습니다. 나는 어떤 종류의 쿼리를 할 때마다데이터베이스 연결을 안전하게하려면 어떻게합니까?
function dbConnect()
{
global $dbcon;
$dbInfo['server'] = "localhost";
$dbInfo['database'] = "users";
$dbInfo['username'] = "root";
$dbInfo['password'] = "password";
$con = "mysql:host=" . $dbInfo['server'] . "; dbname=" . $dbInfo['database'];
$dbcon = new PDO($con, $dbInfo['username'], $dbInfo['password']);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$error = $dbcon->errorInfo();
if($error[0] != "")
{
print "<p>DATABASE CONNECTION ERROR:</p>";
print_r($error);
}
}
가 데이터베이스에 연결 : 예를 들어,이 기능을 사용합니다. 필자는 항상 PDO 준비 문을 사용하여 사용자 입력으로부터 SQL 주입을 방지하고 htmlspecialchars를 사용하여 출력 전에 이스케이프 처리합니다. 제 질문은 이것입니다 : 데이터베이스의 사용자 이름과 암호를 어떻게 보호합니까? 다른 사람이 내 PHP 파일의 소스를 볼 수 있는지는 모르겠지만 할 수있는 경우, 내가 멍청 할 것이라고 상상할 수 있습니다. 나는 무엇을해야합니까?
당신은이 질문에 절대적으로 맞습니다. Skilldrick은 정답을 가지고 있습니다. 민감한 데이터를 문서 루트 외부의 파일에 저장하십시오. 이것은 실제로 제가 PHP 역할을 맡을 때 제가 후보자에게 물어 본 질문입니다. – Draemon
다른 하나는 데이터베이스 오류 문자열을 인쇄하는 것입니다. 프로덕션 환경에서 이와 같은 정보를 인쇄하지 않도록 다른 로깅 체계를 생각해 냈습니다. 시스템에 대한 세부 정보를 제공합니다. 프로덕션 인 경우 syslog 또는 파일에 로그인하거나 여가 시간에 검토 할 수 있도록 전자 메일을 보내십시오. – Josh
누군가 내 웹 서버의 루트 디렉토리 외부에 파일을 저장하는 방법에 대한 정보를 찾으려면 올바른 방향으로 나를 가리킬 수 있습니까? @ 조쉬는 헤드 업에 감사드립니다. – JoeCortopassi