¿Cómo se verifica la corrupción de los datos descargados de HTTP o FTP?
Por sí mismo, nada .
HTTP y FTP ya que los protocolos no ofrecen integridad¹.
Sin embargo, HTTP y FTP generalmente se usan sobre TCP / IP, que tienen sumas de comprobación en sus transportes. Si falla una suma de comprobación TCP, su sistema operativo simplemente descartará el paquete TCP y lo solicitará nuevamente. Por lo tanto, no es necesario que HTTP implemente incluso la verificación de integridad.
Al canalizar algo (incluidos HTTP y FTP) a través de TLS, obtiene una capa adicional de controles de integridad.
Entonces, ¿cómo FTP y HTTP se aseguran de que los datos no estén dañados?
No lo hacen. Normalmente, el trabajo del transporte es garantizar la integridad, no el trabajo del protocolo de la aplicación.
¹ hay un encabezado opcional en HTTP1.1 que le permite al servidor especificar una suma de comprobación, pero como eso es prácticamente imposible para los recursos generados sobre la marcha y tiene un alto costo para archivos grandes, y tiene pocas ventajas sobre el mucho más fino suma de comprobación TCP granular, rara vez se utiliza. Ni siquiera sé si los navegadores lo soportan comúnmente.
Me gustaría agregar aquí que, por supuesto, es más difícil causar una colisión dentro de MD5 (que se usa en estos encabezados) que forjar paquetes TCP, si desea modificar la transferencia intencionalmente. Pero si ese es su escenario de ataque, TLS es la respuesta, no las sumas de comprobación HTTP.