¿Cómo debo cifrar mis datos en una aplicación PHP?

Estaba tratando de usar el SDK PHP de Paypal y noté una advertencia que dice que debo encriptar mi nombre de usuario y contraseña de la API para su uso en entornos de producción. Estoy de acuerdo con esta afirmación, pero me pregunto cómo debería hacerlo. Actualmente no tengo idea.

Esto es lo que dice la advertencia, solo para el registro:

No incruste credenciales de texto claro en el código de su aplicación. Hacerlo es inseguro y en contra de las mejores prácticas. Sus credenciales de API deben manejarse de forma segura. Considere encriptarlos para usarlos en cualquier entorno de producción y asegúrese de que solo las personas autorizadas puedan verlos o modificarlos.

Gracias por adelantado.

Primero, establezca una clave de encriptación:

$key = 'yourpasswordhere'; $string = ' confidential information here '; // note the spaces 

Cifrelo en la entrada DB o desde otro archivo y solo almacene la cadena encriptada en el archivo mismo:

 $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); var_dump($encrypted); // "ey7zu5zBqJB0rGtIn5UB1xG03efyCp+KSNR4/GAv14w=" 

Descifrarlo más tarde:

 $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); var_dump($decrypted); // " confidential information here " 

En general, puede almacenar credenciales como esta en un archivo fuera de la raíz web. Esto limita el riesgo, pero no se deshace de él por completo.

Si pueden ver su código (o, lo que es peor, editarlo), entonces pueden obtener sus credenciales de todos modos. Cifrar significa que necesita su clave de cifrado en algún lugar que sea tan visible como el nombre de usuario / contraseña.