openssl_pkcs7_encrypt()
requiere que los datos estén encriptados para ser leídos desde un archivo y, por lo tanto, desafortunadamente requiere que los datos confidenciales se escriban en el archivo temporal antes de que se encripta.
En un entorno de alojamiento compartido, ¿qué pasos puedo seguir para minimizar el riesgo de que los datos confidenciales se lean / roben cuando tenga que escribirlos momentáneamente en un archivo temporal?
El código:
$file = tempnam(sys_get_temp_dir(), 'mail');
file_put_contents($file, $body);
$encrypted = tempnam(sys_get_temp_dir(), 'encrypted');
if (openssl_pkcs7_encrypt($file, $encrypted, "cert.pem", NULL)) {
@unlink($file);
$body = file_get_contents($encrypted);
@unlink($encrypted);
} else {
@unlink($file);
@unlink($encrypted);
}
Las pocas cosas que me preocupan son:
-
sys_get_temp_dir()
dependiendo del entorno / host, esto puede variar. - ¿Llamar a
file_put_contents($file, "");
antes de que@unlink($file)
haga una diferencia? - Me imagino que un
throw…catch
alrededor de todo con@unlink
calls también ayudaría