Archives For PHP

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
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:

Il titolo è volutamente simile a quanto già scritto poco tempo fa, e vuole analizzare alcuni consigli che anche io cerco di dare a chiunque si mette a preparare una nuova installazione WordPress (spero prima per sé, poi forse –con buona esperienza sulle spalle– anche per altri), anche se in realtà i concetti di base valgono per qualsiasi accesso a qualunque servizio disponibile sulla grande rete. Basandomi sul blog di chi iThemes Security lo scrive, riporto alcuni passaggi secondo me fondamentali.

WordPress e Authy: autenticazione OneTouch 6

According to this infographic by WP Template on WordPress safety, insecure WordPress themes and plugins contribute to over 50% of all successful WordPress hacks.

Plugins and themes have to go through a screening process before they are released for public use from the WordPress.org plugin repository, so it is important to download your plugins and themes from trustworthy sources and always keep active themes and plugins update to the latest version.

fonte: ithemes.com/2016/11/08/wordpress-hacks

e ancora:

Using the same password on multiple sites is risky.

Using strong passwords for all your logins is one of the best online security practices you can develop.

The best practice to follow is creating a different password for every sing website you are registered on. Definitely don’t use the password you use for your bank account on another site.

An average of 30,000 sites are hacked every day.
This should give you an idea of how many people are affected by cyber attacks, and motivate you to use stronger passwords.

fonte: ithemes.com/2016/11/04/brute-force-attacks

Che poi non è che proprio ci voglia la scala eh. Strumenti come KeePass o simili (anche quelli completamente in cloud) sono fatti apposta per ricordarti password altrimenti (probabilmente) molto difficili da ricordare, soprattutto quando decidi di lasciare fare loro nella fase di generazione di una nuova password complessa. Vale anche il vecchio (ma ancora perfetto) consiglio del “utilizza password apparentemente stupide“, perché ti assicuro che “Il cavallo bianco di Napoleone!” può essere una password certamente più complessa della targa della tua automobile (puoi provare tu stesso su passwordmeter.com, tanto per levarti la curiosità).

Sulla base di ciò, è semplice stilare una ToDo List da tenere sempre bene a mente:

  • Sempre tenere aggiornato il tuo WordPress. Questo vale per il motore principale del CMS, ma anche (soprattutto, in realtà) plugin, temi e codice personalizzato che potresti aver scritto e poi dimenticato lì dopo poco, offrendo una possibile backdoor poco simpatica. Se il server che lo ospita è controllato da te, occorre tenere aggiornato ciò che gli permette di stare online (server web, MySQL, PHP, ecc.).
  • Disinstallare sempre plugin e temi non più utilizzati. Perché qui non si tratta solo di pulizia (sicuramente necessaria per tenere sempre snella l’installazione), ma perché così si vanno a chiudere possibili ulteriori falle, esattamente come da ragionamento del precedente punto della lista.
  • Utilizzare password complesse per ciascun account, possibilmente. Perché se è vero che il tuo blog è aperto alle iscrizioni (e si basa così sul buon senso dei tuoi utenti), è -spero- anche vero che tu possa stabilire delle regole precise per le password di coloro che possono pubblicare qualcosa, o peggio che possono modificare il comportamento del blog intero (un amministratore, tanto per essere chiari).
  • Abilitare l’autenticazione in due fattori per WordPress. E qui ti rimando all’articolo dedicato ad Authy e alla sua possibile integrazione con WordPress, comoda, funzionale, sicura.
  • Cancellare o declassare l’account “admin” predefinito di WordPress. Detto e stradetto, anche nel mio precedente articolo sulla protezione degli accessi alla Dashboard amministrativa, perché quell’utente creato di default nel database, è sempre scomodo e attaccabile (perché è quello che si da per scontato che esista).
  • Scegliere un buon hosting provider per il proprio CMS. Perché la sicurezza comincia dalle fondamenta, e affidarsi a chiunque non è –probabilmente– la migliore scelta, almeno per come la vedo io (e non solo). Un buon partner (perché di questo si tratta, nda) è quello che è sempre attento e pronto ad affrontare una difficoltà, a suggerirti le prossime mosse da fare, a bloccare chi è sgradito prima che faccia danni (più di quanti ne abbia già fatti entrando nel tuo sistema), e che ci tiene alla salvaguardia dei tuoi dati ma anche di coloro che abitano nel tuo stesso “condominio” (quando si parla di hosting condiviso, molto diffuso e primo step per tutti).
  • Scarica plugin e temi solo da fonti sicure. Evita come la peste siti web che promettono di regalarti il tema all’ultimo grido, creati con ore di sudato lavoro e ricchi di plugin solitamente a pagamento, pacchetti “all-in-one” appositamente clonati da siti web che li vendono e supportano quotidianamente. Spesso quei temi contengono codice malevolo, codificato (quindi di difficile decodifica per chi è alle prime armi), da qui in poi è tutto un salto nel buio. Se pensi che un tema sia assolutamente irresistibile, valuta l’acquisto della sua licenza, otterrai così anche un aiuto qualificato in caso di problemi, certamente meno costoso di qualcuno in grado di rimetterti in piedi dopo un deface (o simile) ai danni del tuo sito web.

Hai altri consigli? Vuoi raccontare la tua esperienza e dare qualche suggerimento in merito? L’area commenti –manco a dirlo– è a tua completa disposizione :-)

Condividi l'articolo con i tuoi contatti: