Sedici suggerimenti per la sicurezza per gli sviluppatori di plugin e temi di WordPress
Pubblicato: 2021-10-19Non si può mai essere troppo attenti!
Una parte importante del nostro lavoro come sviluppatori consiste nell'assicurarci che i siti e i plugin che stiamo costruendo siano sicuri.
Le aziende hanno bisogno di soluzioni più veloci con funzionalità sempre più complesse. Sebbene questo sia un buon progresso, la costruzione di progetti complessi richiede anche un'adeguata configurazione della sicurezza. La sicurezza di WordPress è uno degli aspetti più importanti dello sviluppo di un sito web.
Con la crescente complessità delle funzionalità, molti sviluppatori perdono i principi di base della sicurezza per lo sviluppo di siti Web e applicazioni Web. Ciò si traduce in un sito Web imperfetto che è aperto ad attacchi informatici e altri rischi.
Pertanto, è essenziale implementare alcuni protocolli di sicurezza di base per lo sviluppo di siti Web e applicazioni Web durante la creazione del progetto.
Di seguito sono riportati 16 suggerimenti per la sicurezza per gli sviluppatori Web che ti aiuteranno a mantenere il tuo sito sano e salvo.
1. Scopri quali dati necessitano di protezione
Uno dei principi di sicurezza più importanti per lo sviluppo di siti Web è che devi solo archiviare i dati necessari.
Quando stai sviluppando un progetto, devi porre queste tre domande:
- Quali dati deve archiviare l'azienda?
- Quali dati sensibili deve crittografare l'azienda?
- Se, per qualche motivo, i dati sono compromessi, quanto potrebbe danneggiare l'azienda?
Più dati sensibili memorizzi, maggiore è il rischio di esposizione. Se è necessario archiviare i dati sensibili, è necessario crittografarli in modo che diventi di difficile accesso.
2. Implementare la gestione dei ruoli e il controllo degli accessi
Durante la progettazione di un sito Web, plug-in o tema, è importante fornire agli utenti i privilegi più bassi possibili.
I privilegi dovrebbero essere limitati in modo che l'utente ottenga solo ciò di cui ha bisogno e non possa accedere ad altre aree.
Ad esempio, i contributori dovrebbero essere limitati alla possibilità di creare nuovi post e pagine ma non pubblicarli. Gli editor dovrebbero essere in grado di creare nuovi post e pubblicarli ma non essere in grado di modificare il design o i plug-in.
Allo stesso modo, mentre sviluppi una funzionalità specifica nel tuo plugin o tema che desideri limitare, assicurati di creare nuovi ruoli utente di WordPress durante l'installazione. Informa gli amministratori, in modo che i ruoli giusti vengano assegnati ai rispettivi utenti che utilizzeranno il plug-in o il tema che stai sviluppando.
Ecco una rapida rappresentazione pittorica di come appare la struttura.
Questo approccio riduce al minimo i problemi perché possiamo limitare la quantità di danni che un intruso può fare. Puoi anche limitare i danni causati da errori o errori da parte di un utente curioso che scherza in aree di un sito Web che in realtà non dovrebbero essere.
È inoltre necessario limitare l'accesso all'interno del team di sviluppo a seconda del ruolo.
3. Applicare l'autenticazione
L'autenticazione del sito Web è il processo di sicurezza che consente agli utenti di verificare la propria identità per accedere ad aree riservate di un sito Web.
Durante lo sviluppo di un tema o di un plug-in, avrai alcuni dati che devono essere limitati mentre alcuni dati sono visibili agli utenti. Pertanto, è importante aggiungere controlli nel codice per verificare se l'utente che accede ai dati riservati è autenticato e dispone del ruolo utente corretto.
Allo stesso modo, durante la creazione di un sito Web, è possibile implementare pratiche di gestione dell'account efficaci come l'imposizione di password complesse e l'autenticazione a più fattori per proteggere i dati degli utenti.
L'autenticazione a due fattori è uno dei metodi più diffusi per implementare l'autenticazione.
L'autenticazione a due fattori (2FA) è un processo in due fasi in cui è necessario un codice aggiuntivo o una password monouso (OTP) per accedere al tuo sito oltre alla password del tuo sito web. Questa OTP viene solitamente inviata a un altro dispositivo tramite SMS, telefonata o un'applicazione 2FA riconosciuta come Google Authenticator, Authy, Duo Security e molti altri. L'implementazione della 2FA ti protegge dagli attacchi di forza bruta.
Se stai costruendo il tuo sito Web in WordPress, dai un'occhiata a questi incredibili strumenti che ti consentono di proteggere il tuo sito Web.
- Limita i tentativi di accesso: questo strumento ti protegge dagli attacchi di forza bruta limitando il numero di tentativi di accesso. Include anche l'anti-spam e la disconnessione automatica degli utenti inattivi.
- WP2 FA: il plug-in WP2FA ti consente di aggiungere l'autenticazione a due fattori al tuo sito Web in un istante. Supporta anche più app 2FA come Google Authenticator, Authy, FreeOTP, Duo Security e molti altri.
- Shield Security: questo plug-in non supporta app 2FA come Google Authenticator e SMS 2FA, tuttavia è utile per coloro che utilizzano YubiKey.
- WPassword: questo plug-in ti aiuta a imporre password complesse per il tuo sito Web WordPress, a bloccare gli utenti con troppi tentativi di accesso non riusciti e altro ancora. Si integra perfettamente con WooCommerce e altri plugin di terze parti.
4. Controlla il tuo tema o plugin prima di rilasciarlo
Prima che un tema o un plug-in venga rilasciato, devi assicurarti che il tuo codice sia il più possibile privo di errori. È possibile utilizzare determinate dipendenze del compositore per rilevare eventuali vulnerabilità nel codice.
Alcune delle dipendenze consigliate per i siti Web WordPress sono:
- Wpthemereview
- Standard di codifica Wp
Questi standard di codifica hanno regole di codifica rigorose come eseguire sempre l'escape dei dati prima di stamparli, utilizzare nonce per tutte le richieste, disinfettare i dati delle richieste prima di utilizzarli, fornire autorizzazioni utente adeguate e altro per proteggere il codice.
Questi strumenti sono ottimi se stai sviluppando il tuo tema o plugin.
Dovresti anche controllare WPScan Security Scanner. È un ottimo scanner di sicurezza per siti Web online che verifica eventuali vulnerabilità del tuo sito Web.
5. Evita alcune funzioni PHP
Alcune funzioni PHP come eval() e unserialize() possono esporre i dati di sistema e possono portare all'esposizione dei dati del server che possono causare l'arresto del server o l'accesso a tutte le informazioni del server dall'hacker.
Ecco alcune funzioni PHP che dovresti evitare ove possibile:
eval() : eval può eseguire codice PHP arbitrario. Potrebbe esporre i tuoi codici ad attacchi di injection se non utilizzato correttamente.
serialize() o unserialize(): non utilizzare serialize() o unserialize() con l'input fornito dall'utente. Gli aggressori possono sfruttare queste funzioni. Possono passare una stringa con un oggetto arbitrario serializzato per eseguire codice arbitrario.
md5() : Internet è pieno di recensioni sulle debolezze crittografiche di md5() 1 ed è considerato insicuro. Usa una funzione di hashing migliore, come SHA-2.
sha1() : sha1() è un'altra funzione di hashing che non dovrebbe essere utilizzata a causa della natura veloce degli algoritmi di hashing. Si consiglia di utilizzare l'algoritmo di hash SHA-2 al posto di md5() in qualsiasi framework moderno.
6. Usa i linter per trovare problemi nel codice
Uno strumento lint è un analizzatore di codice statico di base che controlla il codice sorgente per errori di programmazione e stilistici. Il tono di voce di Linter dovrebbe essere amichevole per far andare avanti il progetto.
I codici Lint sono un ottimo modo per trovare potenziali vulnerabilità e ridurre gli errori durante lo sviluppo di un sito Web o di un'app. È possibile utilizzare determinati linter di sicurezza per lo sviluppo di PHP, JS e HTML.
Ecco alcuni strumenti degni di nota per l'analisi statica dei tuoi codici PHP sono:
- PHP-parallelo-Lint
- SonarLint
- Salmo
- PHP Lint
Puoi usare SonarLint anche per HTML e Javascript linting.
Altri linter JS degni di nota sono:
- JS Lint
- ES Lint
7. Rimuovere il codice e i plug-in inutilizzati
Con software sempre più complessi, aumenta anche il potenziale di vulnerabilità nel codice. I temi e i plugin di WordPress non sono diversi. Le funzionalità sempre crescenti di codici come HTML5, CSS e JavaScript consentono agli sviluppatori di creare app Web avanzate.
Tuttavia, la crescente complessità delle applicazioni è un'arma a doppio taglio. Mentre aiutano a fornire le funzionalità che gli utenti si aspettano, espandono anche la superficie di attacco dell'applicazione. Una misura per affrontare tale vulnerabilità è rimuovere il codice che non viene utilizzato.
Utenti diversi potrebbero non aver bisogno di tutte le funzionalità di un sito Web o di un'applicazione Web. Rimuovendo le funzionalità non necessarie in base ai requisiti degli utenti in ogni distribuzione, puoi ridurre le superfici di attacco e il rischio associato.
Se ami sviluppare siti Web in WordPress, ti consigliamo di utilizzare temi e plug-in che soddisfino le tue esigenze pur essendo leggeri in termini di codice. Non solo mantengono il tuo sito web sicuro, ma aiutano anche con l'ottimizzazione dei motori di ricerca. Ecco alcuni dei migliori temi WordPress leggeri e veloci disponibili.
8. Utilizzare la convalida lato server e lato client
Se sei una persona che ama scrivere codici personalizzati, è essenziale utilizzare la convalida sia lato client che lato server. La convalida lato client aiuta a proteggere dall'utente che commette errori comuni come l'immissione errata dei dati o la dimenticanza dei campi. Tale convalida rileva i dati non validi prima che raggiungano il server, risparmiando tempo e denaro.
Immagina, se la convalida lato client si verifica solo dopo che un viaggio di andata e ritorno al server non riesce, dovrai affrontare ritardi nel dire agli utenti cosa hanno fatto di sbagliato senza consentire loro di correggere immediatamente i loro errori.
Tuttavia, la sola convalida lato client non è sufficiente come misura di sicurezza. È inoltre necessario utilizzare la convalida lato server. La convalida lato server ti protegge da input dannosi e altri vettori di attacco.
9. Sanifica qualsiasi input dell'utente e richiesta di dati
La sanificazione dell'input utente è una misura di sicurezza informatica di controllo, pulizia e filtraggio dei dati degli utenti e delle API di qualsiasi carattere e stringa non autorizzati o indesiderati per impedire l'iniezione di codice dannoso nel sistema.
Gli hacker possono iniettare comandi specifici ed eseguire azioni che possono compromettere la sicurezza del tuo sito web. La sanificazione dell'input aiuta a mantenere l'integrità dei dati e migliora la sicurezza del sistema.
10. Applicare correzioni permanenti
Durante l'esecuzione di un controllo di sicurezza, potresti notare alcune vulnerabilità che continuano a riapparire di tanto in tanto. È necessario determinare la causa principale delle nuove vulnerabilità in modo da poterle eliminare definitivamente invece di aggiungere una patch parziale.
Ad esempio, molto spesso potresti riscontrare problemi SQL/XSS nel tema o nel plug-in che sviluppi. In tal caso, invece di creare un controllo di sanificazione per ogni input, creare una funzione/classe e definire una politica che ogni volta che c'è un input dell'utente, tutti i dati dovrebbero essere passati attraverso questa classe/funzione.
11. Evitare configurazioni errate e impostazioni predefinite di sicurezza
Errori di configurazione della sicurezza si verificano quando le impostazioni di sicurezza non vengono definite e implementate e vengono mantenuti i valori predefiniti. La mancata implementazione dei controlli di sicurezza o la loro implementazione con errori può aumentare la probabilità di avere vulnerabilità nel tema, nel plug-in o nel sito Web che crei.
L'errata configurazione si verifica spesso perché un sistema, un amministratore di database o uno sviluppatore non ha configurato correttamente il framework di un'applicazione, creando pericolosi percorsi aperti per gli hacker.
Assicurati che l'impostazione predefinita sia sicura e non imposti automaticamente le password (se richieste). Ad esempio, se il plug-in utilizza una directory in cui gli utenti possono caricare file, chiedi sempre agli utenti di impostare le password e il percorso della directory.
12. Tieniti informato e aggiornato
La sicurezza informatica è un campo in continua evoluzione. È necessario essere consapevoli degli ultimi aggiornamenti di sicurezza e dei rischi emergenti in modo da poter stare al passo con gli sviluppi e mitigare le minacce nuove ed emergenti nel codice.
Come sviluppatore, aiuta a tenersi informato sulle notizie e scrivere codice più sicuro, quali sono le migliori pratiche per proteggere la codifica, disinfettare meglio il codice e gestire meglio l'input dell'utente.
Per fare ciò, segui gli esperti online e tieniti aggiornato con il tuo blog di sviluppo web preferito. Stai già leggendo questo. Quindi sei partito bene.
Ecco alcune delle migliori risorse sulla sicurezza di WordPress.
- Blog sulla sicurezza di WP White
- blog WordFence
- Blog Sucuri
13. Mantenere il codice
Il codice che scrivi oggi potrebbe non essere sicuro domani. Nuove varianti di vulnerabilità continuano a venire fuori e ha bisogno di aggiornamenti costanti anche dalla fine di uno sviluppatore.
Quando aggiungi nuove funzionalità a un plug-in oa un tema, verifica che non influisca sulla sicurezza di altri moduli o classi o funzioni nel codice. In tal caso, è necessario aggiornare il codice per correggere i problemi.
Puoi anche utilizzare strumenti come GitHub per mantenere il codice del tuo tema o plugin. Ti aiuterà a tenere traccia del codice e risolvere i problemi più velocemente. La sicurezza si evolve sempre. Per stare al passo con le ultime tendenze, è essenziale rinnovare costantemente i test di sicurezza in modo da poter individuare le vulnerabilità e migliorarle.
14. Aggiorna regolarmente i tuoi pacchetti software
È un gioco da ragazzi.
Mantenere aggiornati i pacchetti software come PHP, Javascript, HTML e altri aiuta a risolvere nuovi problemi di sicurezza. Il miglioramento della sicurezza del software è sempre una preoccupazione costante e, a tal fine, ci teniamo sempre aggiornati con l'ultima versione di tale software.
15. Collabora con il tuo team
Prendi nota dei ticket di sicurezza che vengono inviati al tuo team di supporto. Se i tuoi clienti segnalano problemi di sicurezza, considera prioritario affrontarli. Il tuo utente finale fornisce il miglior feedback sul tuo lavoro, quindi usalo bene!
Discuti i problemi di sicurezza con il team di sviluppo e assicurati che qualsiasi patch che sviluppi risolva il problema di sicurezza e non rompa nient'altro prima di renderlo pubblico. Se devi collaborare spesso con i compagni di squadra o lavorare con grandi clienti che hanno interi dipartimenti coinvolti nel supporto, è una buona idea utilizzare un software webinar per facilitare il processo.
16. Preparati per lo scenario peggiore
Non puoi essere troppo attento. Il Web e tutto ciò che viene pubblicato sul Web non può mai essere sicuro al 100%. Tuttavia, puoi adottare misure che possono aiutare a mitigare i rischi.
La chiave è valutare le potenziali vulnerabilità e sviluppare un'adeguata risposta al rischio con adeguate misure di sicurezza. Appaiono spesso nuove tecniche di attacco, quindi anche le migliori pratiche devono evolversi come parte di questo processo.
Ad esempio, se un sito Web WordPress viene violato, il piano di emergenza dovrebbe includere cosa fare in caso di violazione. Ciò dovrebbe contenere i metodi di backup, il processo di pulizia e i passaggi necessari per ricostruire il sito Web e ripristinare il servizio.
Tale piano consentirà a tutte le parti interessate di risolvere rapidamente le cose senza essere sopraffatti dal sovraccarico di informazioni o reagire in modo eccessivo con azioni non necessarie.
Pensieri finali
Cos'altro puoi fare per migliorare la sicurezza del tuo tema o plugin? Beh, un sacco di cose. Vedete, scrivere codice sicuro non è una cosa una tantum. Le tecnologie si evolvono e i metodi di attacco si evolvono con essa.
La realtà è che non puoi prevenire tutti gli attacchi informatici o mitigare ogni rischio immaginabile. Il tuo obiettivo dovrebbe essere quello di fare il più possibile con ciò che hai e rivedere costantemente il tuo codice per migliorarlo.
Costruisci un piano di sicurezza ben definito per il tuo sito web e preparati ad affrontare il peggio. Assicurati di prendere i ticket o i rapporti relativi alla sicurezza come la massima priorità.
Pubblica un post sul blog o un annuncio all'interno della tua comunità che hai rilasciato una correzione per la sicurezza in modo che tutti i tuoi utenti possano aggiornare ed evitare che i loro siti Web vengano compromessi.
La sicurezza informatica non è molto diversa da una strategia militare. La chiave è la preparazione! Spero che questo post ti abbia aiutato con la tua preparazione. Facci sapere nei commenti quali misure prendi per migliorare la sicurezza del tuo sito web.
Riferimenti utilizzati in questo articolo
↑ 1 | https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C |
---|