Actualmente estoy trabajando en un sitio web para el grupo universitario de mi iglesia, y estoy empezando a preocuparme un poco por la seguridad de lo que estoy escribiendo. Por ejemplo, utilizo esta función:¿Cómo puedo asegurar mi conexión a la base de datos?
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);
}
}
para conectarme a la base de datos cada vez que hago una consulta de algún tipo. Siempre utilizo las declaraciones preparadas PDO para evitar la inyección de SQL de cualquier entrada del usuario, y utilizo htmlspecialchars para escapar antes de la salida. Mi pregunta es la siguiente: ¿Cómo protejo mi nombre de usuario y contraseña para mi base de datos? No sé si alguien puede ver la fuente de mis archivos PHP, pero si pudieran, solo puedo imaginar que me rociarán. ¿Qué debo hacer?
Tiene toda la razón al preguntar esto. Skilldrick tiene la respuesta correcta: coloque datos confidenciales en un archivo fuera de la raíz del documento. Esta es en realidad una pregunta que hice a los candidatos cuando estaba contratando para un rol de PHP. – Draemon
Otra cosa aquí, está IMPRIMIENDO una cadena de error de base de datos. Me gustaría llegar a un esquema de registro diferente para que en el entorno de producción no esté imprimiendo información como esta. Expone detalles sobre su sistema. Si se trata de su producción, conéctese a algo como syslog, un archivo o envíese un correo electrónico para que pueda revisarlo cuando lo desee. – Josh
¿Hay alguna posibilidad de que alguien me señale la dirección correcta para buscar información sobre cómo colocar archivos fuera del directorio raíz de mi servidor web? @josh gracias por el heads-up. – JoeCortopassi