Archives For PHP

Durante la stesura dell’articolo dedicato a Iliad (pubblicato ormai circa un mese fa), ho avuto la necessità di controllare da dove passasse il mio traffico dati per poter confermare quanto scritto in giro (ovvero che nel primo periodo di vita di Iliad si passasse tutti dai suoi IP francesi anziché da quelli italiani). Ci sono tanti siti web che offrono la possibilità di controllare questi dati catturandoli direttamente da browser, ma tra pubblicità, controlli di sicurezza e altre menate varie diventa davvero seccante navigarli, è per questo motivo che ho creato “My Information“, una semplice pagina riepilogativa che potesse mostrarti le informazioni che cerchi e nulla più.

Iliad è arrivata in Italia, non senza problemi 17

My Information

No, non è ottimizzato al 100% per i dispositivi mobili (anche se si mostra correttamente ai tuoi occhi) e no, non è perfetto neanche nello stile presentato (perché si potrebbe fare molto di meglio), probabilmente ha anche un nome banale e poco attraente, eppure è esattamente ciò di cui forse necessiti anche tu. Il tuo browser trasmette dei dati a ogni sito web che visiti, per questo motivo ho potuto approfittare di qualche funzione PHP nativa e delle API messe a disposizione dal sito IPStack.com per elaborare quanto catturato, in diretta, senza salvare alcunché sul server (in pratica i tuoi dati li vedi solo tu), così siamo tutti più contenti e la Privacy ringrazia.

My Information è disponibile per tutti all’indirizzo public.gfsolone.com/tools/ip, e puoi raggiungerlo anche tramite l’alias go.gioxx.org/ip. Va ad aggiungersi agli altri tool pubblici che ho messo a disposizione tramite il mio sito web personale (li trovi tutti raccolti sul Wiki).

Un’occhiata dietro le quinte

È tutto molto semplice. Di suo PHP permette già di catturare alcune informazioni provenienti dal tuo browser, per questo motivo è necessario esclusivamente fargliele scrivere in pagina per potertele mostrare, questo vale certamente per il tuo IP ($_SERVER['REMOTE_ADDR']) o lo User-Agent del browser che stai utilizzando nel momento in cui visiti My Information ($_SERVER['HTTP_USER_AGENT']). Il resto, seppur in qualche maniera anch’esso recuperabile (non tutto), ho deciso di darlo in pasto a IPStack; questo mi restituisce una serie di dettagli interessanti che posso ulteriormente lavorare (o mostrare direttamente) per arricchire ancor più quanto messo a tua disposizione, come per esempio una mappa (libera, di OpenStreeMap, ma richiamata tramite Leaflet), l’hostname assegnato al tuo IP (se pubblico), il CAP, latitudine e longitudine rilevate, ecc.

Ti lascio dare un’occhiata al codice (semplicissimo) che racchiude buona parte delle informazioni mostrate poi a video:

Il puntatore su mappa è assolutamente migliorabile, non sempre latitudine e longitudine producono il risultato sperato, potrei certamente impostarlo sul CAP rilevato, ma si tratta di finezze che in fin dei conti poco servono probabilmente a te che hai bisogno di catturare un altro tipo di dati.

Il tool è online ormai dallo scorso giugno, ed è stato già visitato un buon numero di volte (strano, non l’ho neanche sponsorizzato), non ti resta che metterlo alla prova (nei limiti del concesso, sfrutto le API gratuite di IPStack che offrono un massimo di 10.000 richieste / mese, dovrebbero bastare, giusto? :-)).

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Di come creare un bot di Telegram per poterlo utilizzare come ponte tra il tuo blog e il gruppo / canale che preferisci, te ne avevo già parlato qualche tempo fa. Quello di cui ti parlo oggi è un modo diverso per consegnare le ultime novità del blog (o qualsiasi altro sito web fornito di feed RSS) a Telegram, e va un po’ in contrasto con quanto ammesso nel 2016, perché nel frattempo le cose su IFTTT sono cambiate (e si sono stabilizzate e velocizzate).

Da WordPress a Telegram, passando per IFTTT

In funzione ormai da diversi mesi (quasi un anno, a dirla tutta), il bot di Gioxx’s Wall consegna –in un gruppo di amici “non aperto al pubblico”– le ultime pubblicazioni che compaiono qui dove tu stesso stai leggendo adesso l’articolo, prendendo URL e immagini di copertina dal feed RSS pubblico. Questo genera un’anteprima immediatamente selezionabile su Telegram, che i frequentatori del gruppo possono utilizzare per puntare il browser alla pagina dell’articolo, in attesa dell’approvazione del template di apertura rapida che ho finalizzato e sottoposto lo scorso gennaio.

L’applet

L’applet di IFTTT si basa su Webhook, e ricostruisce quindi un’azione scatenata da una nuova voce disponibile nel feed di cui ti parlavo prima, per poi catturarla e trasformarla in un URL da richiamare (e in quel caso, passo dalle API di Telegram).

Da WordPress a Telegram, passando per IFTTT 1

Cosa ti serve conoscere:

  • il token HTTP API che ti viene rilasciato da @BotFather (fai riferimento sempre a questo articolo se non hai ancora creato il tuo bot, paragrafo “Creazione del bot“),
  • l’ID del gruppo o del canale (chat_id), di cui ti parlo adesso.

Ricavare il chat_id

Fino a qualche tempo fa era il dato più ostico da ricercare per chi non è abituato a giocare con API e output JSON, oggi è facilmente ricavabile grazie all’utilizzo di un bot (giusto per rimanere in tema) :-) Io ti parlo di entrambi i metodi utilizzabili, scegli tu la via preferita. La prima è più manuale, la seconda è immediata ed evidentemente più comoda per tutti.

Manualmente

Invita il tuo bot all’interno del canale o gruppo che ti interessa “servire“, quindi collegati all’indirizzo https://api.telegram.org/bot<Token del bot>/getUpdates dove <Token del bot> andrà sostituito con il token HTTP API di cui si parlava poco fa. Un esempio pratico potrebbe essere questo: https://api.telegram.org/botjbd78sadvbdy63d37gda37bd8/getUpdates (quel token non esiste e otterrai un output di errore, è solo per fare un esempio). Accedendo alla pagina, ammesso che il token sia giusto, ti ritroverai davanti a una serie di dettagli in JSON che mostreranno i dettagli di ciò che il bot ha visto negli ultimi minuti, compreso l’ingresso nel gruppo / canale che hai portato tu a termine:

Da WordPress a Telegram, passando per IFTTT 2

Quell’ID evidenziato in rosso è proprio quello che identifica il gruppo / canale, dettaglio che a te serve per completare il lavoro, compreso di quel “” davanti, come fosse un numero negativo. Copialo negli appunti.

Automaticamente

Inserisci il bot @RawDataBot all’interno del tuo gruppo / canale. Appena entrato, questo risponderà fornendoti proprio quei dettagli JSON che tu avresti potuto vedere manualmente (spiegato sopra). Ti basterà individuare la riga id in corrispondenza di chat, quindi copiare il numero negativo riportato.

Da WordPress a Telegram, passando per IFTTT 3

IFTTT: completare la configurazione

Hai i due dettagli fondamentali che servono per completare la configurazione dell’Applet su IFTTT. Attiva (su IFTTT, se non lo hai già fatto) il servizio di RSS e anche quello di web request, quindi crea la nuova Applet con questi dettagli:

  • New feed item: indica l’URL del tuo feed (es. https://gioxx.org/feed)
  • Make a web request: inserisci all’interno dell’URL il richiamo alle API di Telegram (un po’ come fatto prima se hai scelto il metodo manuale per ricavare il chat_id) ma stavolta citando l’azione di invio nuovo messaggio, https://api.telegram.org/botjbd78sadvbdy63d-37gda37bd8/sendMessage.
    Il Method dovrà essere di tipo POST e il Content Type di tipo application/json.
    All’interno del Body potrai finalmente specificare il contenuto di ciò che il bot dovrà inviare all’interno del gruppo / canale, io ho inserito questo contenuto:
{"chat_id":"-123456789","text":"{{EntryTitle}} - {{EntryUrl}}/?utm_source=telegram&utm_medium=group"}

Dovrai chiaramente sostituire -123456789 con il vero chat_id ricavato precedentemente, mentre il resto potrebbe anche rimanere identico. L’articolo verrà infatti servito nella modalità “Titolo – URL“, quest’ultimo seguito da alcuni parametri per me utili a fini statistici (e monitorati da Google Analytics, nda).

Ti propongo alcuni ritagli della schermata di IFTTT per permetterti di capire meglio i vari passaggi (in realtà si tratta di un grande blocco in pagina unica):

Salva ora la tua configurazione e attiva l’Applet (se IFTTT non lo ha già fatto autonomamente), quindi attendi che il tutto cominci a funzionare (dovrai pubblicare un nuovo articolo sul tuo blog).

Se vuoi effettuare un test

Ho messo insieme qualche riga di PHP per permetterti di effettuare dei test prima di andare “in produzione“, trovi il risultato all’indirizzo mobile.gfsolone.com/tgram_public.php:

Da WordPress a Telegram, passando per IFTTT 7

Compila il form con i veri dettagli del tuo bot (Token) e del canale / gruppo che vuoi raggiungere (ChatID), quindi inserisci il testo che vuoi inviare e fai clic su “Invia messaggio“. Salvo errori, vedrai comparire il tuo messaggio su Telegram.

Da WordPress a Telegram, passando per IFTTT 8

Lo so, il messaggio è stupido, era per dire che ho migrato mobile.gfsolone.com a HTTPS :-p

Ora dovresti praticamente avere tutto a tua disposizione per replicare una configurazione funzionante, non ti resta che iniziare a sperimentare.

Buon inizio settimana breve! :-)


credits: stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id

Un doveroso ringraziamento anche a Napolux che tempo addietro mi aveva suggerito di adottare questo metodo passando da IFTTT.

Condividi l'articolo con i tuoi contatti:

In realtà la prima parte del lavoro l’ha fatta tutta Plesk e l’hosting su cui faccio girare il mio DokuWiki, lo ammetto. La seconda è invece pilotabile tramite estensione da installare, configurare e cominciare a utilizzare, modificando il metodo di login predefinito del software.

DokuWiki: HTTPS e autenticazione in due fattori

Plesk permette (se il modulo è installato e configurato) di utilizzare Let’s Encrypt per generare (e in seguito rinnovare automaticamente) un certificato per uno o più domini gestiti. Inoltre, per completare l’opera, può automaticamente forzare il redirect 301 verso ogni pagina in HTTPS così da evitare che qualche visitatore finisca ancora sotto HTTP (dalle impostazioni hosting di ciascun dominio / vhost). Spiegato in una sola immagine, il risultato è questo:

DokuWiki: HTTPS e autenticazione in due fattori 1

2FA (Autenticazione in due fattori)

Che poi è il succo dell’articolo promemoria nel caso in cui mi serva rifarlo successivamente a questa prima installazione. Il plugin si chiama authg2fa ed è disponibile nel repository ufficiale di DokuWiki all’indirizzo dokuwiki.org/plugin:authg2fa.

Lo puoi installare direttamente dal tuo Extension Manager, basta cercarlo con il nome che ti ho appena indicato. Lo troverai poi in dashboard (sotto gli Additional Plugins), per poter amministrare i token di ciascun utente registrato nel Wiki. Per poter ottenere il QR code da catturare con Authy (o qualsiasi altra applicazione compatibile) dovrai prima generare il Secret (pulsante Create new Secret, nda), quindi potrai selezionare “Show Secret/QR Code“:

DokuWiki: HTTPS e autenticazione in due fattori 2

Effettua la solita procedura per la registrazione di un nuovo accesso 2FA sulla tua applicazione preferita, quindi abbandona questa pagina e torna in dashboard, spostandoti in Configuration SettingsAuthentication, dove ti basterà modificare il metodo di autenticazione da quello attualmente utilizzato a authg2fa:

DokuWiki: HTTPS e autenticazione in due fattori 3

Scorri la pagina delle impostazioni fino in fondo, quindi salva la modifica appena operata, dovresti perdere la tua sessione e venire costretto a un nuovo login, stavolta specificando anche il codice di autenticazione doppia:

DokuWiki: HTTPS e autenticazione in due fattori 4

Inserisci i dati richiesti ed entra nuovamente in possesso del tuo utente e del tuo Wiki :-)

Ricorda: in caso di problemi, consulta la documentazione ufficiale del plugin disponibile su dokuwiki.org/plugin:authg2fa, ciò che puoi fare nell’immediato (nel caso in cui tu abbia rogne con l’autenticazione a due fattori) è tornare in “plain auth” modificando il file di configurazione di DokuWiki via FTP (/conf/local.php), modificando la stringa da $conf['authtype'] = 'authg2fa'; a $conf['authtype'] = 'authplain';.

Buon lavoro :-)

Condividi l'articolo con i tuoi contatti:

Dando per assodato che tu abbia già letto il vecchio articolo sull’argomento (tutt’oggi valido, quindi leggilo pure se non lo hai già fatto), in questo nuovo articolo voglio proporti ulteriori best practices da adottare per provare a proteggere quanto più possibile il tuo blog, il tuo utente e quindi l’accesso a ore e ore di lavoro che vuoi mantenere pulite e funzionanti online, per garantire la tua presenza nel web.

WordPress e sicurezza: alcune best practices 2

L’articolo dei 5 passaggi fondamentali per la sicurezza di WordPress include note riguardanti la rimozione dell’utente amministrativo predefinito, la verifica e l’aggiornamento dei plugin installati (ma anche di WordPress stesso), il backup dei dati (file modificati e copia del database MySQL completo) e l’utilizzo di un plugin di sicurezza che possa dare maggiori indicazioni verso la direzione desiderata (quella per una protezione quanto più completa possibile). Cosa si può aggiungere oggi alla lista?

Autenticazione a due fattori

Te ne sto parlando fino a sfinirti, i miei articoli dedicati al mondo dell’autenticazione 2-Step hanno ormai lo stesso sapore delle preghiere che la nonna ti costringeva a dire prima di andare a letto, oppure in chiesa quando riusciva a trascinarti là dentro durante la domenica mattina, me ne rendo conto. Eppure, nonostante i gravi bug che saltano ogni ostacolo, l’autenticazione in due passaggi resta uno dei punti fondamentali da sfruttare per la propria protezione. Dove possibile, è sempre bene abilitarla.

Ti ho già parlato di autenticazione 2-Step e WordPress, grazie all’utilizzo del plugin di Authy, mi basta riportarti il vecchio articolo, è valido tutt’oggi:

WordPress e Authy: autenticazione OneTouch

Modifica delle chiavi di sicurezza

Tecnicamente “Salt“. Copio e incollo direttamente da un wp-config.php di base:

Authentication Unique Keys.
Change these to different unique phrases!
You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.

e trovi qui un articolo su iThemes.com che meglio spiega di cosa si tratta:

A WordPress salt is a random string of data that hashes the WordPress security keys in the wp-config.php file.
If you open your wp-config.php file, you’ll see the Authentication Unique Keys and Salts section with seven security keys.

Puoi aprire in qualsiasi momento il tuo file wp-config.php e, spostandoti nell’area dedicata alle “Authentication Unique Keys“, selezionarle e sostituirle con quelle generate randomicamente dal tool ufficiale di WordPress che trovi all’indirizzo api.wordpress.org/secret-key/1.1/salt. Caricando nuovamente il file sul tuo spazio FTP, perderai l’accesso alla tua Dashboard e ti verrà richiesto di eseguire nuovamente il login, lo stesso varrà per qualsiasi altra postazione precedentemente collegata alla stessa Dashboard.

Se utilizzi come me un plugin di sicurezza, controlla che questo ti permetta di eseguire più rapidamente questa operazione, come succede per iThemes Security:

WordPress e sicurezza: alcune best practices 1

Meglio se HTTPS

In linea di massima questo sarebbe necessario e dovuto per blog (siti web più in generale) che propongono form di login, ma è comunque bene tenere conto che sarebbe meglio passare da HTTP a HTTPS pur integrando un certificato di base generato via Let’s Encrypt. Così facendo si crea una connessione criptata tra client e server, più difficile da intercettare e analizzare (ho detto più difficile, non impossibile, prima che qualcuno faccia lo sborone nei commenti). Se vuoi, ti posso proporre un articolo in inglese che ti descrive buoni motivi per passare a HTTPS, altrimenti ti rimando direttamente al mio –di articolo– dove ti spiego come eseguire la migrazione del tuo blog WordPress:

WordPress: passaggio da HTTP a HTTPS (aggiornato)

C’è altro?

Lo chiedo a te, proprietario di un blog e curatore del WordPress alla sua base. Di punti riguardanti la sicurezza del software ideato e inizialmente sviluppato da Matt Mullenweg probabilmente ce ne sono moltissimi altri, si può sempre migliorare il suo hardening, ogni giorno c’è un buon consiglio da seguire e mettere in atto, ma voglio potermi confrontare con te che stai leggendo questo mio ulteriore pezzo sull’argomento, chiedendoti di proporre nuovi punti per un prossimo aggiornamento, o magari precisare qualcosa di già discusso, sai bene che mi fa sempre piacere sviluppare discorsi ben motivati in merito agli articoli pubblicati.

Buon lavoro!


Immagine di copertina Glenn Carstens-Peters on Unsplash
Condividi l'articolo con i tuoi contatti:

Rispondo a una domanda abbastanza comune che viene generalmente rivolta a mezzo mail o tra una chiacchiera e l’altra quando ci si trova con conoscenti che muovono passi autonomi sul web. WordPress è meraviglioso, è adatto a qualsiasi tipo di sito web e sì, può contare su una miriade di temi e plugin disponibili gratuitamente e a pagamento.

Quali sono però i 5 passi comuni per evitare che qualcosa vada storto esponendosi a un attacco dall’esterno? Provo a darti una base –spero– solida.

WordPress: 5 step per la sua (e tua) sicurezza

Questo nuovo articolo va a riprendere (parzialmente) e fare coppia con uno più vecchio, che trovi ancora qui. Cominciamo?

Occhio a username e password

Che vuol dire tutto e nulla.

WordPress: 5 step per la sua (e tua) sicurezza 3

Ciò che intendo è, per esempio, non utilizzare l’account amministrativo di default (che va quanto prima degradato a semplice utente, se non addirittura eliminato), in favore di un nuovo account da te appositamente realizzato, amministrativo, con username non facilmente indovinabile e con una password complessa (parleremo anche di password robuste quanto prima, ma ti porto a questa vignetta, che tanto spiega in merito). Non utilizzare la stessa password che hai già usato in passato per altri servizi. Fatti aiutare da un buon password manager se ti serve.

Inutile dire che l’autenticazione e due fattori è ormai una cosa fondamentale. Dai un’occhiata qui per capire di cosa sto parlando: gioxx.org/2016/09/01/wordpress-e-authy-autenticazione-onetouch.

Verifica i plugin installati

Che si traduce con:

  • utilizza dei plugin costantemente mantenuti, che non superino (se possibile) i 6 mesi dall’ultima data di aggiornamento;
  • cancella quelli non più utilizzati, che non ti servono, non pensare che un domani possano tornarti utili ancora, perché si fa sempre in tempo a ricercarli nuovamente e reinstallarli;
  • cerca di rimanere informato in merito ai loro cambiamenti, perché è facile che un attacco possa sfruttare falle in loro integrate (oppure in servizi a cui si appoggiano).

Capisco che spesso non è cosa semplice, però potrai sempre chiedere un aiuto alle community di condivisione e assistenza sul mondo WordPress in giro per il web, già più approcciabile per chiunque.

Aggiorna WordPress

Ma anche i plugin, che poi potrebbe ricadere nella voce precedente.

WordPress: 5 step per la sua (e tua) sicurezza 2

Tenere aggiornato ogni sistema (non solo operativo) è fondamentale per tappare falle scoperte e dichiarate, prima che qualcuno le sfrutti nella peggior maniera possibile. Quando viene pubblicata una nuova versione di WordPress, questa va a correggere problemi e anomalie generalmente importanti, che ti permettono di dormire sonni tranquilli. Per fortuna, salvo problemi o limitazioni imposte, WordPress aggiorna automaticamente ogni minor release, lasciando a te l’onere di pensare alle major.

Aggiornare costa solo un paio di clic, ma prima di farlo ricorda di verificare che non ci sia del codice personalizzato che possa smettere di funzionare in seguito all’operazione (chiedi aiuto al tuo sviluppatore nel caso non sia tu direttamente a occuparti del tuo blog).

Tieni sempre un backup aggiornato

WordPress: 5 step per la sua (e tua) sicurezza 4

Sia del database, sia dei file salvati sullo spazio disco del server. Se i secondi cambiano forse meno spesso (occhio però alle immagini e più in generale ai media caricati online), il primo è in costante crescita e modifica. Avere una copia di backup aggiornata è fondamentale per evitare di incorrere in possibili disastri (causati da te, dal tuo provider o da qualcuno di completamente estraneo).

Per portare a termine questa operazione esistono decine di plugin, sia gratuiti che a pagamento. Io ho scelto di affidarmi a BackUpWordPress della Human Made.

BackUpWordPress
BackUpWordPress
Developer: XIBO Ltd
Price: Free

Comodo, molto personalizzabile e disponibile anche in versione gratuita limitata (io uso questa), lasciando fare poi a SyncBack il lavoro sporco (quello del download totale di tutti i file, backup compresi). Ce ne sono anche altri (di plugin, intendo), magari prova a dare un’occhiata a questo articolo di ThemeTrust pubblicato qualche tempo fa: themetrust.com/wordpress-backup-plugins (e provali sempre in ambiente di test, mai di produzione!)

Utilizza un plugin di sicurezza

WordPress: 5 step per la sua (e tua) sicurezza 1

Che sembra una sciocchezza, forse, ma non lo è. Un plugin di sicurezza ti aiuta a prenderti cura della tua installazione WordPress, suggerendoti dove mettere mano per evitare sgradite sorprese. Ne esistono di ogni tipo, e generalmente sono tutti in grado di suggerire buone strategie di protezione della propria area amministrativa, fare scansioni alla ricerca di possibili anomalie (sfruttabili dall’esterno), limitare gli accessi di ogni utente conosciuto (e non, soprattutto).

Io utilizzo da tempo iThemes Security (ex Better WP Security). Ne ho parlato in maniera approfondita in un precedente articolo disponibile qui:

Proteggere WordPress da login non autorizzati

Tutto chiaro? Al solito: per consigli, suggerimenti e critiche costruttive, l’area commenti è a tua totale disposizione, sempre ben felice di leggere cose nuove e interessanti! Per il supporto, invece, vi rimando al forum di ogni singolo plugin, o genericamente al forum della community italiana di WordPress.

Buon lavoro!

Condividi l'articolo con i tuoi contatti: