Categorie
sviluppo wordpress

WordPress: Visualizzare solo i “contenuti” di cui si è autore

Nelle situazioni in cui più persone partecipano alla preparazione degli articoli sullo stesso sito a volte ci si trova davanti ad una grande quantita di contenuti in cui si fatica a filtrare le proprie bozze.

Quando necessario, per semplificare le cose, aggiungo questa piccola funzione che filtra post, pagine e Custom Post Type sulla base dell’utente loggato verificando 3 cose:

  1. se non faccio parte del gruppo “administrator” (gli admin continueranno e vedere tutti i contenuti)
  2. se sono in area di amministrazione
  3. se non sono nella pagina dei media (in modo che possa vedere tutte le foto caricate)

L’hook usato è il “pre_get_posts” che ci permette di aggiungere una condizione prima di effettuare la query rendendo il tutto molto più performante.

Queste poche righe vanno aggiunte nel file function.php oppure linkate tramite un include o require.

Categorie
security wordpress

WordPress: preparare trappole per i furbetti

Se dopo esserti protetto dai tanti attacchi bruteforce continui a vedere nei log errori 404 a percorsi non convenzionali (es. phpmyadmin, phpinfo, test, cgi, register, admin, system, ecc…) è possibile che qualche BOT automatico stia facendo una scansione cercando potenziali falle.

Una delle possibili soluzioni è l’implementazione di una semplice blackhole in php. In pratica si tratta di una trappola che scatta ogni volta che si tenta di visitare alcune url.

Via .htaccess si effettua il redirect verso un specifico file php che si occupa tracciare l’ip e quante più informazioni possibili presentando poi una pagina in cui lo si informa che la cosa non ci è piaciuta.

Per chiudere il giro, ad ogni acesso controlleremo che l’IP non sia uno dei quelli precedentemente tracciatati e nel caso gli diremo che il suo IP è stato bloccato:

“You have been banned from this domain”

 

Per completezza devo dire che questa tecnica presenta dei problemi di perfomace nel caso, con il tempo, il numero di IP da controllare dovesse diventare molto grosso in quanto richiedere la lettura di una file ed il confronto di una stringa per ogni pageview.

Al momento l’unica alternativa che conosco è fail2ban ma non sempre è possibile chiedere al proprio servizio di hosting la sua implementazione.

Ecco come procedere:

  1. Scarichiamo dal sito di Perishable Press il file Blackhole.zip e scompattiamo in una directory nella root del nostro sito e modifichiamo le variabili che troviamo dentro index.php (mittente, destinatario,soggetto)
  2. Aggiungiamo le regole al nostro .htaccess per intercettare le url “maliziose”
  3. Facciamo in modo di caricare il file blackhole.php dentro il nostro fuctions.php

Se abbiamo fatto tutto bene, tentando di accedere ad una di quelle URL, dovremmo trovarci davanti a quella bella pagina rossa che vedete qui in alto e il nostro IP dovrebbe essere stato aggiunto al file blackhole.dat. (ricordatevi che poi è da togliere)

Qui sotto due piccoli snippets che spero possano esservi d’aiuto:

Nota: io aggiungo al soggetto della mail che ricevo anche il SERVER_NAME in modo che sappia su che sito è stato tentato l’accesso: $_SERVER['SERVER_NAME']

 

Categorie
sviluppo wordpress

WordPress: Impedire l’accesso alla dashboard

Su progetti in cui è richiesta l’autenticazione offerta da WordPress per gestire i contenuti lato frontend non sempre è necessario rendere visibile la dashboard.
Personalmente io arrivo bloccore l’accesso a tutti gli utenti che non hanno i permessi per fare modifiche dei contenuti.

In passato avevo usato il filtro offerto da “login_redirect” come anche indicato in questa pagina del Codex ma se l’utente avesse provato ad accedere alla dashboard dopo aver fatto correttamente il login ci sarebbe riuscito senza problemi.

Ho così cambiato fitro passado ad “admin_init” che mi permette di verificare il tipo di utente ogni volta che si tenta un accesso in una qualsiasi pagina “amministrativa”

Queste le 10 righe di codice:

Categorie
plugins sviluppo wordpress

WordPress: cambiare il permalink della ricerca

Questo è un’altro degli snippets che uso normalmente sui template WordPress che mi chiedono di sviluppare.
Il primo pezzo (template_redirect) si occupa semplicemente di modificare il permalink base delle ricerca da “http://www.nomesito.com/?s=query” a “http://www.nomesito.com/search/query/“.

Con il secondo gestisco il caso in cui NON voglio che la keyword usata per la ricerca sia “search“.
Vado quidi a modificare la “search_base” ed a creare la regola di rewrite.
Ovviamente è necessario rigenerare i permalink in modo che la regola venga gestita correttamente.

Mark Jaquith aveva scritto anche un plugin ma oltre al fatto che non gestiva la modifica della “search_base” preferisco gestirlo via codice includendolo dimanicamente dentro functions.php