5 tools to debug and secure your PHP code

Beloved or mistreated, there’s no doubt that PHP is one of the most widely used programming languages ​​in the world, mainly thanks to its dominant position in the WWW. Indeed, even though the most radical chic developers have been declared its death for many years now, PHP remains the programming language of 8 web applications out of 10! You don’t believe it? Are you a little skeptical? Read the topic on W3Techs!

Among the most famous PHP websites we can include: Facebook, Wikipedia, Vk, obviously WordPress.com, Pinterest, etc.

If you are a PHP developer then you are very focused on the web and your attention is often absorbed mainly by aspects of interaction with the browser: usability, speed of execution, responsiveness, SEO optimization and so on.

A little less attention you’ll pay to all that undergrowth of hidden issues related to security, this not for your negligence but for a whole series of external factors that generate thoughts like these:

  • uso solo prodotti Open Source, la manutenzione della sicurezza la lascio fare ai migliaia di programmatori che ci lavorano
  • il sito del mio cliente lo vedranno in quattro gatti, perché dovrebbero cercare di attaccare proprio lui?
  • ho realizzato solo un contact form di poche decine di codice e non ci sono errori, impossibile che possano sfondarlo o farci chissà che
  • faccio sempre tutti gli aggiornamenti di WordPress, non potrà mai accadermi niente di grave!

Ovviamente di ragionamenti così potrei scriverne a centinaia, ma sono tutti completamente sbagliati: come qualsiasi altro linguaggio di programmazione PHP richiede molta attenzione dal punto di vista della sicurezza e benché sia un linguaggio solido e stabile le vulnerabilità sono create dagli sviluppatori stessi che mettono a disposizione del potenziale attaccante il pieno accesso a funzionalità e risorse che non dovrebbero mai finire nelle mani sbagliate.

Non dimentichiamo che anche un sito con pochissime visite può diventare un’arma nelle mani della persona giusta – o sbagliata – perché può potenzialmente consegnare le leve di comando dell’intero server se questo non è stato messo in sicurezza da un bravo sysadmin.

Vi presento quindi 5 strumenti facili da reperire e quasi altrettanto facili da utilizzare per individuare vulnerabilità o violazioni già avvenute nel vostro codice PHP – e per rendere la vita meno facile a chi va a spasso tra le pagine delle tue applicazioni web munito di intenzioni tutt’altro che buone…

  1. Exakat (https://www.exakat.io) – Si tratta di un tool di “analisi statica” dotato di una tra le più ampie librerie di pattern per individuare vulnerabilità in codice PHP: trappole puntuali, errori logici, regole di architettura, risorse inutilizzate, obsolescenza del codice e altro ancora. Interessante la presenza di analizzatori specifici per framework come WordPress, CakePHP, Zend, ecc.
  2. SonarPHP (https://www.sonarsource.com/products/codeanalyzers/sonarphp.html) – Altro ottimo analizzatore di codice statico, utilizza tecniche avanzate di pattern matching e analisi del flusso di dati per analizzare il codice e trovare bug e buchi di sicurezza. Si integra molto bene con Eclipse e IntelliJ.
  3. PMF (https://github.com/nbs-system/php-malware-finder/) – Scanner di malware da linea di comando molto potente e sempre aggiornassimo, permette di individuare la presenza di malware attraverso un’analisi statistica sulla struttura del codice sia da un punto di vista sintattico che semantico.
  4. PHP Vulnerability Scanner (https://www.autosectools.com/PHP-Vulnerability-Scanner) – Si tratta di un fuzzer di applicazioni Web avanzato che analizza diverse classi di vulnerabilità sia tramite analisi statiche che dinamiche. Può rivelare rapidamente le seguenti potenziali vulnerabilità: arbitrary command execution, arbitrary file read/write/change/rename/delete, local file inclusion, arbitrary PHP execution, SQL injection, user controlled function invocation, user controlled class instantiation, reflected cross-site scripting (XSS), open redirect e full path disclosure.
  5. Checkmarx (http://lp.checkmarx.com/php-code-analysis/) – Soluzione cloud per trovare vulnerabilità nel codice PHP e ottenere indicazioni su come risolverle. Ogni vulnerabilità viene spiegata in tutti i suoi aspetti, quindi ricorrere a questo vero e proprio servizio di consulenza è consigliabile quando non si è in grado di fare da soli, in questo modo si accresce anche il proprio know-how e si introducono best practice per non ripetere l’errore in futuro.

Come sempre, si tratta solo di una carrellata del tutto parziale e indicativa, ma serve per ricordare a tutti – compresi i miei collaboratori – che il benchmark di sicurezza sul codice PHP sviluppato in proprio o ereditato da terzi è sempre una fase fondamentale e importantissima nella realizzazione di un’applicazione web di qualità.

Share

Leave a comment