Eventuali rischi per la sicurezza per l'uso di mailto :?

3

Uso uno script PHP che esegue una ricerca nel database e quando non viene trovato alcun risultato, all'utente viene presentato un collegamento mailto con questo formato

mailto:[email protected]?subject=SEARCHED_QUERY_HERE

Il SEARCHED_QUERY_HERE è sostituito dal gruppo di ricerca cercato dall'utente che non ha restituito alcun risultato, Qualcuno può sfruttarlo? (io codifico SEARCHED_QUERY_HERE )

    
posta MoneyGiver 06.06.2015 - 14:25
fonte

3 risposte

3

Questo potrebbe teoricamente essere abusato per l'iniezione di HTML. Immagina se un utente cercasse il termine

waterfall</a><a href="http://maliciouslink.com">Click Here

Il </a> nel termine di ricerca termina il collegamento mailto, quindi inserisce un secondo collegamento con le parole "Fai clic qui".

La codifica dell'URL naturalmente attenuerà questo problema.

Inoltre, assicurati di convalidare la query di ricerca prima della query del database, altrimenti potrebbe essere utilizzata in modo analogo per l'iniezione SQL.

    
risposta data 06.06.2015 - 20:37
fonte
3

Devi codificare URL SEARCHED_QUERY_HERE , altrimenti se un utente cerca &body=something , il corpo del messaggio di posta elettronica verrà impostato su something . Inoltre, se non lo codifichi tramite URL, se l'utente cerca un% letterale%20 (o simile), verrà invece visualizzato come spazio nel messaggio.

Questo non è un rischio per la sicurezza, però.

L'altro, ovvio rischio è che se non si codifica in HTML correttamente SEARCHED_QUERY_HERE , si passerà a XSS. Ma sembra che lo stai già facendo, quindi sei coperto.

Alcuni linguaggi di programmazione, come PHP, richiedono di specificare esplicitamente che le virgolette debbano essere codificate, quindi assicurati di passare gli argomenti corretti alla tua funzione di codifica HTML.

Esempio (PHP)

echo '<a href="mailto:[email protected]?subject='.htmlspecialchars(rawurlencode(SEARCHED_QUERY_HERE), ENT_QUOTES, 'utf-8') .'>Link</a>';
    
risposta data 06.06.2015 - 16:47
fonte
0

Non credo, ma la preoccupazione maggiore è che tu autorizzi l'input dell'utente a modificare la pagina restituita. Assicurati di utilizzare una buona API per convalidare l'input dell'utente (come viene utilizzato per generare la query) e di proteggere adeguatamente l'output in questa pagina. Se possibile, utilizza ESAPI di OWASP .

    
risposta data 06.06.2015 - 16:37
fonte

Leggi altre domande sui tag