Tag: php

  • Vulnerabilità critica di PHPMailer

    Articolo aggiornato dopo la pubblicazione dei dettagli della vulnerabilità.

    Dawid Golunski ha scoperto e segnalato una vulnerabilità critica di PHPMailer nelle versioni precedenti la 5.2.18 che consentirebbe l’esecuzione di codice arbitrario sul server della vittima.

    Il problema è stato corretto dalla versione 5.2.18.

    (altro…)

  • Aggirare la censura di Facebook

    Facebook ha delle regole in merito al tipo di contenuti che possono essere caricati sul sito. Indipendentemente da quello che ciascuno può pensare, Facebook decide legittimamente cosa fare in casa propria e chi va a casa di Facebook deve rispettare quelle regole.

    Quanto segue ha il solo scopo di fornire una proof of concept, non è un’istigazione a violare leggi o ad abusare in alcun modo di terzi. (altro…)

  • Autodeploy con GitHub

    Questo articolo spiega come fare un deploy automatico su un server di produzione del codice PHP scritto su un server di sviluppo locale utilizzando un repository privato (a pagamento) di GitHub e le chiavi ssh per l’autenticazione.

    git è un bellissimo strumento, ma è anche molto complesso, per questa ragione questo articolo è tutto fuorché esaustivo in materia.

    Continua a leggere
  • PHP: come non confrontare gli hash

    Provate ad eseguire questo codice:

    <?php var_dump(md5('240610708') == md5('QNKCDZO'));
    var_dump(md5('aabg7XSs') == md5('aabC9RqS'));
    var_dump(sha1('aaroZmOk') == sha1('aaK1STfY'));
    var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m'));
    var_dump('0010e2' == '1e3');
    var_dump('0x1234Ab' == '1193131');
    var_dump('0xABCdef' == ' 0xABCdef');
    (altro…)

  • Due tool command line

    Capita ogni tanto di essere davanti ad un terminale ad aspettare che finisca un’operazione sistemistica oppure di aver bisogno un’informazione e trovarla senza utilizzare un browser.

    Questi due programmi sono utili proprio in quei due contesti. (altro…)

  • WAMP su Windows 7

    Questo articolo spiega come configurare una struttura WAMP su un Windows 7 installando i singoli programmi separatamente.

    Esistono anche dei kit preconfezionati come, a puro titolo di esempio, EasyPHP, ma è più istruttivo costruire da soli la propria configurazione in quanto si imparano meglio il funzionamento e l’interazione dei vari componenti, si possono aggiornare i singoli programmi senza dipendere da terzi ed è molto più semplice di quello che si possa credere. Le istruzioni di seguito partono da alcuni presupposti e hanno alcune limitazioni, tra cui:

    • l’installazione non ha una sicurezza adatta ad un server pubblico, ma è pensata per un server di sviluppo protetto da altri metodi;
    • la piattaforma su cui viene installato il tutto è un Windows 7 a 64 bit e, dove possibile, vengono installate le versioni a 64 bit dei programmi;
    • vengono installate le ultime versioni disponibili dei software cercando il più possibile di mantenere i default;
    • tutti i download suggeriti riguardano solamente programmi gratuiti, anche se per alcune utility esistono alternative a pagamento;
    • ripeto: non usate questa procedura per configurare un server pubblicato su Internet.

    Queste istruzioni sono valide per le ultime versioni di Apache (2.4), PHP (5.5) e MariaDB (10.0), con versioni precedenti potrebbero essere necessarie ulteriori modifiche o accorgimenti per far funzionare il tutto. (altro…)

  • PHP FastCGI Process Manager con CentOS 6

    Con Apache gli script PHP possono essere interpretati essenzialmente in due modi: attraverso un modulo apposito (mod_php) o richiamando l’interprete PHP con FastCGI.

    In molti casi si utilizza mod_php perché è l’opzione di default preconfigurata, ma ci sono delle alternative, con vantaggi e svantaggi che vanno valutati con attenzione.

    mod_php è in genere (ma anche qui ci potrebbero essere eccezioni) più veloce e permette di personalizzare alcune direttive di configurazione all’interno del file .htacess; il rovescio della medaglia è che l’interprete PHP viene caricato assieme ad ogni istanza di Apache, anche quando non serve perché viene richiesto un file di testo o un file con un’immagine, e viene eseguito nel suo stesso contesto di sicurezza.

    Utilizzando FastCGI il codice eseguito dall’interprete PHP è completamente separato da quello del web server, quindi si può definire un contesto di sicurezza differente da quello utilizzato dal server e l’interprete viene eseguito solamente quando è necessario. Nel 2012 è stata scoperta una vulnerabilità di PHP eseguito via CGI tale per cui richiamando una pagina mettendo nell’URL ?-s (esempio: http://www.example.com/index.php?-s) viene visualizzato il sorgente dello script al posto del risultato. Il baco è stato corretto, ma vale la pena di eseguire un test se si passa da mod_php a FastCGI.

    Dalla versione 5.3 PHP ha introdotto FastCGI Process Manager (FPM), una tecnologia per demonizzare l’interprete PHP e richiamarlo da server HTTP differenti anche, volendo, da host diversi. FPM crea uno o più pool di server, ciascuno con un proprio contesto di sicurezza e una propria configurazione, in questo modo il numero di worker che interpretano il codice PHP può essere diverso dai worker del server HTTP.

    Vediamo come passare da mod_php a FPM su un’installazione CentOS 6.

    (altro…)

  • Malware su PHP.NET?

    Da questa mattina verso le 10:00 Google Safe Brosing ha considerato PHP.NET un sito pericoloso, provocando una ridda di commenti sagaci su Twitter.

    La diagnostica si Google parla di malware riferito ai nomi a dominio cobbcountybankruptcylawyer.com, stephaniemari.com e northgadui.com e indica stephaniemari.com, northgadui.com e satnavreviewed.co.uk tra gli intermediari per la distribuzione del malware.

    La stessa diagnostica citava l’AS36752 tra gli Autonomous System interessati, che è quello che annuncia anche il blocco 69.147.80.0/20 a cui appartiene l’IP 69.147.83.199 di www.php.net

    Per ora tutti gli sviluppatori che non ricordano l’ordine dei parametri delle funzioni di PHP non hanno altra alternativa che utilizzare la documentazione offline o qualche mirror non ufficiale.

    Agiornamento 13:30 – Hannes Magnusson ha detto che il sito di PHP non contiene malware e ha richiesto la rimozione dalla blacklist.

    Agiornamento 15:30 – Il sito è tornato accessibile anche a chi utilizza i filtri di Google Safe Browsing. Il contenuto del file principale scaricato con wget differisce rispetto a quello di questa mattina solamente per quanto riguarda la data di ultimo aggiornamento

  • Tiny Tiny RSS

    tiny tiny rssQuando a metà di marzo Google aveva annunciato la chiusura del suo reader online  si era aperta la caccia all’alternativa.

    All’inizio mi ero attrezzato con un mio reader basato su SimplePie, che faceva il suo onesto lavoro. Ultimamente stavo provando Feedly, ma ieri ha annunciato che ci sarebbero state due versioni: una gratuita e una a pagamento, la qual cosa mi ha convinto a tornare sui miei passi.

    Dietro segnalazione di Luigi ho provato Tiny Tiny RSS, che si è rivelata una piacevole scoperta.

    Tiny Tiny RSS è un reader online di RSS open source scritto in PHP (richiesta la versione 5.3) che utilizza MySQL o PostgreSQL come base dati e supporta più profili utente.

    L’installazione è abbastanza semplice e ben documentata: una volta copiati i file nella directory desiderata e creato il database, il tutto avviene via interfaccia web.

    Le opzioni disponibili sono molte e permettono una personalizzazione notevole. Il programma permette di importare un file OPML, chi viene da Feedly può scaricarlo qui. In tema, il file esportato da Feedly non rispetta in maniera ferrea le regole XML e potrebbe non essere importato da Tiny Tiny RSS; in particolare bisogna verificare che i nomi dei feed e gli URL non contengano caratteri ‘&’ non convertiti nell’entità HTML ‘&amp;’

    L’aggiornamento dei feed viene eseguito da uno script demonizzato che gira sotto il profilo utente di Apache.

    Una volta importato l’elenco dei feed e impostato il demone, resta solamente da regolare qualche opzione e godersi il nuovo reader personale di cui ho trovato molto utili le scorciatoie da tastiera.

  • SimplePie

    SimplePieGoogle ha annunciato la chiusura di Google Reader, il servizio di lettura online di feed RSS.

    Costruire un proprio lettore di feed RSS con un linguaggio per il web non è un’impresa titanica e potrebbe anche essere l’occasione per approfondire la conoscenza di un linguaggio.

    Noi che siamo geek e programmatori quando ci serve una procedura la scriviamo, non ci lamentiamo perché non esiste.

    Se si protegge la procedura con una password di accesso e, magari, dietro un server https (con un certificato auto-emesso o con quelli che si comperano a 10 dollari l’anno), si ottiene un po’ più di tutela della privacy rispetto ad un servizio online. Senza contare che non si dipende più dai tagli dei costi di chi offre il servizio.

    Volendo fare un reader in PHP e SQL (ma il SQL non è obbligatorio, se non lo si conosce potrebbe bastare un file di testo salvato sul file system e caricato in un array), si può immaginare una struttura testata-dettaglio a tre livelli (categoria, feed, articolo).

    L’acquisizione dei dati da un feed RSS è la parte più pallosa, quindi meglio delegarla ad una libreria già fatta, come l’ottima SimplePie, che si smazza tutta la burocrazia del caso e gestisce anche una cache locale per ottimizzare i tempi di download.

    (altro…)

  • pChart

    pChartpChart è una libreria PHP per la creazione di grafici.

    Fino a qualche giorno fa quando dovevo fare dei grafici in PHP usavo JP Graph; volendo provare qualcosa di nuovo con un output che non ricordasse i grafici di Lotus 1-2-3 2.0, mi sono guardato in giro e ho provato alcune alternative.

    pChart si è rivelata la libreria migliore tra quelle che ho valutato grazie sia alla ricchezza di caratteristiche sia alla documentazione ben fatta e ricca di esempi, che permette di familiarizzare molto velocemente con le funzioni.

    Una volta scaricato il pacchetto, la directory degli esempi è arricchita da una comodissima sandbox che permette di creare interattivamente il codice scegliendo le opzioni da una serie di menu.

  • Weevely

    È uscita la versione 1.0 di Weevely, un kit in Python per generare una shell remota in PHP.

    Questo è il tipico tool che si colloca nella zona grigia tra il reato e la legalità, ma tacere su queste cose non fa altro che aumentare l’ignoranza dei SysAdmin e, quindi, la sicurezza dei loro sistemi. È inutile fare le mezze verginelle, meglio guardare in faccia alla realtà.

    La legge punisce gli accessi non autorizzati ai sistemi informatici, i software come Weevely devono essere utilizzati solamente negli ambiti della legalità. Ecco fatto.

    (altro…)