Python 2.7.9: Novedades en la Versión 2.7.9 de Python

Python 2.7.9: Novedades en la Versión 2.7.9 de Python

Python 2.7.9 es una versión de mantenimiento de Python 2.7, que se lanzó el 20 de agosto de 2014. Esta versión incluye varias novedades importantes, como:

  • El módulo ssl de Python 3.4 se ha retroportado a Python 2.7.9. Esto proporciona compatibilidad con los protocolos TLS 1.2 y TLS 1.3.
  • SSLv3 se ha deshabilitado de forma predeterminada en httplib y sus dependencias inversas. Esto se debe al ataque POODLE, que es una vulnerabilidad de seguridad en SSLv3.
  • El módulo ensurepip se ha retroportado a Python 2.7.9. Este módulo proporciona el administrador de paquetes pip en todas las instalaciones de Python 2.7.

Cambios en el módulo ssl

El módulo ssl de Python 2.7.9 es idéntico al módulo ssl de Python 3.4. Esto significa que los programas escritos para Python 3.4 también funcionarán en Python 2.7.9.

Los principales cambios en el módulo ssl incluyen:

  • Soporte para los protocolos TLS 1.2 y TLS 1.3.
  • Deshabilitación de SSLv3 por defecto.
  • Mejoras en el rendimiento y la seguridad.

Cambios en httplib

El módulo httplib de Python 2.7.9 deshabilita SSLv3 por defecto. Esto se debe al ataque POODLE, que es una vulnerabilidad de seguridad en SSLv3.

Para habilitar SSLv3, se puede establecer el valor del parámetro protocols del objeto HTTPConnection. Por ejemplo:

Python
import httplib

conn = httplib.HTTPConnection("www.example.com")
conn.protocols = ("TLSv1", "SSLv3")
conn.request("GET", "/")

Cambios en el módulo ensurepip

El módulo ensurepip de Python 2.7.9 proporciona el administrador de paquetes pip en todas las instalaciones de Python 2.7.

Antes de Python 2.7.9, era necesario instalar pip por separado. Ahora, pip ya está instalado por defecto en todas las instalaciones de Python 2.7.

Conclusión

Python 2.7.9 es una versión de mantenimiento que incluye varias novedades importantes. Estas novedades mejoran la compatibilidad, la seguridad y el rendimiento de Python 2.7.

Ejercicio

Implementa un programa que utilice el módulo ssl para conectarse a un servidor web. El programa debe utilizar el protocolo TLS 1.2 o TLS 1.3.

Solución

Python
import ssl
import socket

def main():
    host = "www.example.com"
    port = 443

    # Crea un objeto socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # Establece una conexión con el servidor web
    sock.connect((host, port))

    # Crea un objeto SSLContext
    ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)

    # Crea un objeto SSLSocket
    ssl_sock = ctx.wrap_socket(sock)

    # Envia una solicitud GET al servidor web
    ssl_sock.sendall("GET / HTTP/1.1\r\nHost: {}\r\n\r\n".format(host))

    # Recibe la respuesta del servidor web
    data = ssl_sock.recv(1024)

    # Imprime la respuesta del servidor web
    print(data)

if __name__ == "__main__":
    main()

Este programa se conectará al servidor web www.example.com en el puerto 443 utilizando el protocolo TLS 1.2. El programa enviará una solicitud GET al servidor web y luego imprimirá la respuesta del servidor web.