¿Por qué PHP es más adecuado para el uso de software de nombre de usuario, contraseña y código de acceso y formato de archivo?

No lo es

PHP en realidad no es adecuado para escribir sistemas de inicio de sesión seguros porque requiere un esfuerzo extraordinario para validar y procesar la información de los usuarios finales sin abrir el software a ataques que puedan eludir las protecciones vigentes. Incluso algo tan trivial como usar == en lugar de === al comparar dos cadenas puede abrirlo a todo tipo de problemas, ya que PHP prefiere trabajar con números sobre cadenas.

Esto es extremadamente visible en proyectos como Joomla, donde durante años fue trivial omitir la solicitud de inicio de sesión del administrador.

No, PHP no es el más adecuado para estas tareas. Es fácil de usar para estas tareas, pero ciertamente no es adecuado.

Un lenguaje mucho mejor para esta tarea que viene a la mente es Ur, que impone tipos estrictos en las entradas y en realidad producirá errores de compilación para los escollos más comunes. Es mucho más difícil de usar que PHP, especialmente si no está familiarizado con la familia de lenguajes basados ​​en ML, pero el resultado es una aplicación web que es varios órdenes de magnitud más difícil de comprometer.

Otros que vienen a la mente incluyen Haskell, Ocaml y Pony. Estos lenguajes usan reglas de tipeo fuertes para exigir que cuando acepte entradas, esté seguro de cuáles serán las entradas y de dónde serán.

Incluso C, con todos sus riesgos de desbordamiento del búfer y otros problemas de seguridad, es una mejor herramienta en manos de un programador con experiencia en seguridad que PHP. Después de todo, OpenSSL, GNU PG y otro software de seguridad están escritos en C. Pero tenga en cuenta que este tipo de software está escrito por expertos en el campo de la criptografía, no por los desarrolladores web.


La regla general es: si está escribiendo un sistema de inicio de sesión para su aplicación web, deténgase. Use una biblioteca existente y bien probada. No escribas el tuyo. Especialmente si PHP es el único lenguaje que conoces.