No estoy seguro de cuál es la mejor manera de abordar su pregunta, aparte de decir "no, no es un problema de seguridad". La abstracción no tiene nada que ver con eso. No estoy seguro de lo que tu amigo quiso decir con eso, pero PHP sí tiene abstracción (clases, herencia, etc.) y no requiere que incluyas ningún HTML en tu página en absoluto Los sitios PHP modernos tienden a tener una capa de datos, una capa lógica (generalmente facilitada por un conjunto de clases que representan objetos virtuales en el sitio) y una capa de presentación. CF probablemente tiene construcciones similares.
Una cosa que notaré (aunque no puedo hablar por CF) es que es muy fácil escribir código PHP terrible, en parte porque es muy indulgente y en parte porque la mayoría de los tutoriales no cubren ningún requisito de seguridad básico .
Sin embargo, aquí hay algunas razones por las que PHP es considerado "inseguro" por algunos:
- El malabarismo de tipo silencioso, conduce a errores lógicos difíciles de detectar.
- La información de fugas en la configuración predeterminada (muestra errores,
php_info
y exec
habilitados, etc.)
- Los tutoriales para MySQL dependen en gran medida de
mysql_query
con concatenación de cadenas, en lugar de consultas parametrizadas con DOP o MySQLi.
- No hay funciones de filtrado de salida incorporadas para XML, JavaScript, etc. Las API para enviar de forma segura a HTML tampoco son claras y simples.
Sin embargo, no se transmite ningún código PHP al cliente en ningún momento . Es totalmente del lado del servidor. Se ejecuta en el servidor y genera un resultado, que generalmente es HTML.
No me malinterpretes, en realidad me gusta PHP. Es fácil de usar y (a pesar de sus peculiaridades) también puede escalar bastante bien. El problema es que es demasiado fácil escribir código. PHP hace que sea muy fácil introducir XSS, CSRF, LFI, RFI, SQLi, etc. en su código, ya que no documentan los riesgos potenciales junto con la referencia de la API, ni proporcionan formas obvias y estandarizadas de abordar los problemas de seguridad.
Mi último punto es este: los idiomas no son intrínsecamente inseguros. Algunos pueden facilitar la escritura de código incorrecto pero, al final, es el desarrollador quien creó la inseguridad, no el idioma.