Technologie Gadgets, SEO Tipps, Geld Verdienen mit WEB!

Previeni gli exploit XSS di Laravel utilizzando la convalida…

Previeni gli exploit XSS di Laravel utilizzando la convalida...

Sebbene la sicurezza delle applicazioni web sia rimasta un aspetto importante nello sviluppo del software, la questione ha acquisito un’importanza fondamentale a causa delle maggiori partecipazioni aziendali e degli investimenti nelle applicazioni, e una vulnerabilità della sicurezza può davvero intaccare la reputazione dell’azienda e la sua capacità fare affari.

In questo articolo parlerò della convalida Laravel e di come disinfettare gli input dei moduli per evitare che gli exploit Laravel XSS danneggino le tue applicazioni Laravel.

Perché abbiamo bisogno della sanificazione degli ingressi?

Gli hacker utilizzano RFI (Remote File Inclusion) e attacchi injection come Cross-Site Script (XSS) e SQL Injection (SQLi) per sfruttare la connessione tra siti web e server. Possono eseguire azioni non autorizzate che possono compromettere la sicurezza. Tuttavia, con la sanificazione in atto, questi attacchi possono essere prevenuti.

La sanificazione degli input è un protocollo di sicurezza per controllare, filtrare e pulire gli input di dati da parte degli utenti dell’app. I dati di input viaggiano tramite richieste GET, richieste POST e cookie, che gli hacker possono modificare, manipolare e modificare per ottenere l’accesso al server su cui è ospitata l’app Web.

Rif. immagine: imperva.com

La sanificazione degli ingressi non è perfetta ed è l’unica opzione per combattere diversi attacchi dannosi. Ma presenta vantaggi come:

  • Fornire una difesa perimetrale contro gli attacchi informatici comuni
  • Prevenire l’inclusione di file remoti e gli attacchi di injection
  • Proteggere il sistema da codice dannoso
  • Salvaguardare il server web, il database e altre risorse digitali

Mantieni le tue app al sicuro sul cloud

DreamHost offre 2FA, SSL gratuito e funzionalità di sicurezza più avanzate su server gestiti che mantengono la tua applicazione al sicuro.

Possibili punti di sfruttamento XSS

Esistono diversi modi a un hacker può attaccare la tua applicazione web Laravel. Di seguito sono riportati alcuni esempi a cui prestare attenzione:

Script in Attributi

Gli attacchi XSS possono essere condotti senza Utilizzare i tag . Altri tag faranno esattamente la stessa cosa, come o altri attributi tra cui al passaggio del mouse O unerrore.

onmouseover cliccami! onerror

Script tramite schemi URI codificati

Se dobbiamo nasconderci dai filtri delle applicazioni web, potremmo provare a codificare caratteri di stringa, ad esempio: a=&\#X41 (UTF-8) e utilizzarlo nei tag IMG:

Molte diverse notazioni di codifica UTF-8 ci offrono ancora più possibilità.

Codifica del codice

Possiamo codificare i nostri script in base64 e inserirli nel Meta Tag. In questo modo elimineremo completamente alert().

Regole di convalida Laravel fornite per impostazione predefinita

  • obbligatorio: accetta solo se il valore non è nullo. Laravel annulla l’input se il campo viene lasciato vuoto.
  • email: accetta solo se l’input è in formato email, [email protected]
  • a volte: un campo del modulo Web che potrebbe essere presente a causa di un’opzione selezionata nel modulo. In tal caso, è possibile specificare a volte | necessario

Sanificazione Laravel

La sanificazione dell’input include le tecniche per identificare e rimuovere le possibili voci di input di stringhe che possono essere dannose per la tua applicazione.

Esempio:
Ecco come puoi disinfettare l’input rimuovendo i tag dello script Utilizzando PHP strip_tags funzione.

Route::post(‘/task’, function (Richiesta $request) { $cleaned_name = strip_tags($request->input(‘name’)); $task = nuova attività; $task->names = $cleaned_name; $ attività->salva(); return reindirizzamento(‘/’);

Come aggiungere middleware per i controlli di convalida sull’input dell’utente

Diamo un’occhiata all’aggiunta di autorizzazione e convalida contemporaneamente sui moduli web. Laravel offre una classe Request per questo scopo.

Puoi creare un modulo con questa classe Request utilizzando il seguente comando:

Produzione artigianale Php: middleware XssSanitization

Questo comando genererà per impostazione predefinita la seguente classe in app/Http/Middleware/XssSanitization.php

spazio dei nomi App\Http\Middleware; utilizzare la chiusura; utilizzare Illuminate\Http\Request; class XssSanitizer public function handle(Request $request, Closure $next) $input = $request->all(); array_walk_recursive($input, function(&$input) $input = strip_tags($input); ); $richiesta->unisci($input); return $successivo($richiesta);

Successivamente, registra questo middleware nel nostro app/Http/Kernel.php file e aggiungi la seguente riga nel file $routeMiddleware vettore.

class Kernel extends HttpKernel …. protected $routeMiddleware = [

‘auth’ => \App\Http\Middleware\Authenticate::class,

….

‘XssSanitizer’ => \App\Http\Middleware\XssSanitizer::class,

]; Ora puoi utilizzare il middleware XssSanitization nei percorsi. Itinerario::gruppo([‘middleware’ => [‘XssSanitizer’]], function () Route::get(‘view-register’, ‘RegisterController@viewRegisterPage’); Route::post(‘register’, ‘RegisterController@registerAction); );

Best practice per la protezione XSS in un’applicazione Laravel

Ecco alcuni punti chiave per la migliore applicazione di questa procedura.

  • Aggiungi livelli di protezione. La ridondanza migliora la sicurezza. Aggiungendo più livelli, ti dai più possibilità di catturare input dannosi che potrebbero sfuggire alla sicurezza iniziale.
  • Non trascurare la convalida lato client. Questo tutorial era incentrato sulla convalida del backend, ma potresti facilmente aggiungere un nuovo livello di protezione del front-end utilizzando HTML/JavaScript. Ad esempio, posso limitare la lunghezza dell’input tramite HTML:
  • In alternativa, avrei potuto utilizzare una funzione JS per convalidare/disinfettare l’input.
    funzione validataForma()
  • Codifica degli URL per negare l’accesso ai parametri Get.
  • Utilizzando un sistema di modelli con escape automatico come Laravel Blade Templates.
  • Utilizzando librerie progettate specificamente per disinfettare l’input HTML:
  • Per un elenco approfondito e aggiornato delle pratiche, consulta The Open Web Application Security Project (OWASP).
  • Standardizzazione a livello di intestazione di Content-Type e assicurarsi che il tipo di risposta del server non sia “testo/html” e impediscono al browser di rilevare automaticamente il tipo di dati “annusare‘.
  • Implementare una politica di sicurezza dei contenuti (CSP) per limitare le conseguenze negative quando viene inserito codice dannoso.

Mantienilo sicuro e igienizzato

I framework di sviluppo Web correggono e aggiornano i loro standard di codifica che superano molte possibili vulnerabilità. Non tutte le vulnerabilità possono essere risolte a livello di strumento o framework. Ogni giorno, la responsabilità degli sviluppatori web o dell’amministratore è garantire che la loro applicazione non consenta agli hacker di sfruttare eventuali vulnerabilità note.

Fammi sapere nella sezione commenti qui sotto se conosci un suggerimento che può aiutare a prevenire gli attacchi XSS di Laravel e lo esaminerò e lo aggiungerò all’articolo.

×

Ricevi la nostra newsletter
Sii il primo a ricevere gli ultimi aggiornamenti e tutorial.

Grazie per esserti iscritto!