PHP è considerato un linguaggio insicuro da sviluppare non a causa di backdoor segrete messe in piedi dagli sviluppatori del linguaggio PHP, ma perché inizialmente è stato sviluppato senza sicurezza come preoccupazione principale e rispetto ad altri linguaggi / framework web è difficile da sviluppare in modo sicuro in esso.
Ad esempio, se si sviluppa un'applicazione web LAMP / LAPP (linux + apache + mysql / postgresql + PHP), è necessario codificare manualmente i servizi di input / output per prevenire l'SQL injection / XSS / CSRF, assicurarsi che non ci siano chiamate sottili a eval
codice fornito dall'utente (come in preg_replace
con un '/ e' che termina l'argomento regexp), gestisci in modo sicuro i file caricati, assicurati che le password degli utenti siano hashed in modo sicuro (non in chiaro), i cookie di autenticazione non sono accessibili , sicuro (https) e solo http, ecc.
La maggior parte dei moderni framework web semplifica molti di questi problemi eseguendo la maggior parte di queste cose in modo sicuro (o inizialmente facendole precariamente e ottenendo aggiornamenti sicuri).
Il rischio che ci sia una backdoor segreta in un PHP open source è piccolo; e il rischio è presente in ogni pezzo di software (windows / linux / apache / nginx / IIS / postgresql / oracle) che usi - sia open source che closed-source. Quelli open-source hanno almeno il vantaggio che molti occhi indipendenti lo guardano sempre e potresti esaminarlo se lo volessi.
Nota anche, in linea di massima, anche dopo aver esaminato completamente il codice sorgente e non aver trovato backdoor e aver esaminato completamente il codice sorgente del compilatore (non trovando backdoors), se poi ricompilate il compilatore (bootstrap usando qualche compilatore non attendibile) e quindi compila il codice sorgente sicuro con il compilatore "sicuro" appena compilato, il tuo codice eseguibile potrebbe ancora avere backdoor portati dall'utilizzo del compilatore esistente non affidabile per compilare il nuovo compilatore. Vedi Riflessioni su Trust Trust di Ken Thompson. (Il modo in cui questo è difeso in pratica è utilizzando molti compilatori indipendenti e oscuri da più fonti per compilare qualsiasi nuovo compilatore e quindi confrontare l'output).