2012-05-24 8 views

Respuesta

5

No por defecto, no.

Proporcionará siempre alguna forma de protección contra ataques simples de escuchas ya que los datos siempre estarán encriptados (siempre que el servidor SSL al que se conecte permita al menos utilizar un cifrado cifrado; sí, cifrados nulos están permitidos en las conexiones HTTPS: roll-eyes :) Sin embargo, de forma predeterminada, no protegerá contra man-in-the-middle, ya que no valida los certificados del servidor, por lo tanto, no puede confiar en que se haya conectado al servidor previsto.

La validación del certificado se puede activar. Para hacerlo, deberá proporcionar un paquete de certificados raíz y usar el cuarto argumento al fopen que le permite especificar un contexto de flujo. El contexto de la secuencia le permite modificar el comportamiento de la secuencia. El ejemplo siguiente cambia provoca que los certificados se validen contra los certificados raíz en el archivo de paquete especificado.

$context = stream_context_create(array(
    'ssl' => array(
     'cafile'  => 'ca_bundle.crt', 
     'verify_peer' => true 
    ) 
)); 

$file = fopen($url, 'r', false, $context); 
+0

Una cosa adicional que puede querer hacer es restringir el conjunto de cifrado permitido para permitir solo formas de encriptación fuertes. El cifrado disponible más fuerte (permitido tanto por el cliente como por el servidor) se debe usar por defecto; Sin embargo, si es realmente quisquilloso, es posible que desee negar las conexiones a servidores que no admitan un nivel de cifrado lo suficientemente alto. Si alguien sabe cómo lograr esto en PHP, publique. – Cheekysoft

Cuestiones relacionadas