Non sono sicuro di come affrontare al meglio la tua domanda, oltre a dire "no, non è un problema di sicurezza". L'astrazione non ha niente a che fare con questo. Non sono sicuro di cosa intendesse il tuo amico, ma PHP fa ha astrazione (classi, ereditarietà, ecc.) E non ti richiede di incorporare qualsiasi HTML in la tua pagina. I siti PHP moderni tendono ad avere un livello dati, un livello logico (generalmente facilitato da un insieme di classi che rappresentano oggetti virtuali sul sito) e un livello di presentazione. Probabilmente CF ha costrutti simili.
Una cosa che noterò (anche se non posso parlare per CF) è che è notoriamente facile scrivere codice PHP terribile, in parte perché è così indulgente, e in parte perché la maggior parte dei tutorial non copre i requisiti di sicurezza di base .
Tuttavia, ecco alcuni motivi per cui PHP è considerato "insicuro" da alcuni:
- La giocoleria di tipo silenzioso porta a errori logici difficili da individuare.
- La configurazione predefinita perde informazioni (visualizza errori,
php_info
e exec
abilitate, ecc.)
- I tutorial per MySQL hanno una pesante dipendenza su
mysql_query
con concatenazione di stringhe, piuttosto che query parametrizzate con PDO o MySQLi.
- Nessuna funzione di filtro di output integrata per XML, JavaScript, ecc. Anche le API per l'output sicuro in HTML non sono chiare e semplici.
Tuttavia, nessun codice PHP viene trasmesso al client in qualsiasi momento . È interamente lato server. Esegue sul server e genera un risultato, che di solito è HTML.
Non fraintendermi - in realtà mi piace il PHP. È facile da usare e (nonostante le sue stranezze) può scalare abbastanza bene. Il problema è che è troppo facile per scrivere codice. PHP rende estremamente facile introdurre XSS, CSRF, LFI, RFI, SQLi, ecc. Nel codice, poiché non documentano i potenziali rischi insieme al riferimento API, né forniscono modi ovvi e standardizzati per affrontare i problemi di sicurezza.
Il mio ultimo punto è questo: le lingue non sono intrinsecamente insicure. Alcuni potrebbero rendere facile la scrittura di codice errato ma, alla fine, è lo sviluppatore a creare l'insicurezza, non la lingua.