Cambiamento sicuro dei collegamenti testuali agli ancoraggi HTML

1

Sto provando a cambiare i link testuali a veri ancore. Ad esempio, voglio cambiare http://example.com in <a href="http://example.com">http://example.com</a> .

Poiché si tratta di una stringa data dall'utente, dovrei prendere precauzioni speciali per cose come XSS (ad esempio rimuovendo tutto < e > ) o è qualcosa di cui non dovrei preoccuparmi in questa situazione? C'è altro che devo tenere a mente quando si costruisce una simile funzionalità?

    
posta Andreas Arnold 23.02.2011 - 10:13
fonte

4 risposte

6

Se stai solo provando a convertire i link, l'opzione più sicura è usare l'igienizzazione e una whitelist. Fondamentalmente un elenco di valori consentiti, che impedisce di passare qualsiasi cosa tu non specifichi. Utilizzare sempre una funzione di sanitizzazione affidabile e una whitelist, non ti consiglio di crearne una nuova a meno che tu non sappia cosa stai facendo. Vedi una pagina come la seguente per riferimento (assicurati che tutta la sanificazione / convalida avvenga sul lato server, ovviamente):

link

Penso che la prospettiva di far usare ai tuoi utenti un linguaggio di markup sia un buon suggerimento per XSS iniettato tag, ma in realtà non risolve il problema dell'XSS concat'd XSS.

Trovo che la risposta del precedente rispondente essenzialmente dicesse che dovresti solo prepararti ad attacchi semplici perché altrimenti stai "scendendo nella tana del coniglio" è spericolato e ingenuo, perché non mettiamo semplicemente un semplice lucchetto sui caveau delle banche in tal caso?

    
risposta data 23.02.2011 - 17:55
fonte
2

Lavoro sul lato per un pacchetto del forum open source, e il codice ha usato un algoritmo straordinariamente complicato per convertire gli URL digitati in link per gli utenti troppo pigri per usare i tag BBCode.

Ci sono stati molti bug risolti e ci sono ancora più bug da risolvere - e l'unica conclusione a cui posso arrivare è di non preoccuparsi della conversione automatica per gli utenti. Fai in modo che utilizzino qualsiasi linguaggio di markup che autorizzi, anche se avrà alcuni problemi di sicurezza, ma sarà molto meno di cercare di analizzare automaticamente gli URL nel testo.

    
risposta data 23.02.2011 - 15:22
fonte
1

Stai cercando di impedire gli attacchi XSS contro l'altro sito? Non è possibile prevedere in che modo gli altri siti risponderanno quando un utente fa clic su un URL, indipendentemente dal fatto che contenga script evidenti o persino markup HTML. Quindi cercare di estrarre / disinfettare roba che sai potrebbe essere pericoloso è solo sicurezza per oscurità.

Se decidi di procedere con questo (molti siti fanno - è nella natura del web per fornire collegamenti ad altri siti) allora devi solo preoccuparti di attacchi potenzialmente diretti al tuo sito - e semplicemente assicurarti che l'URL è ben formato sarebbe sufficiente, ma non è un compito banale.

    
risposta data 23.02.2011 - 14:13
fonte
-1

Convalida solo che il tuo sito è protetto da XSS (tramite HTMLEncode () o altri metodi prima della visualizzazione) ... non puoi fare molto per nessuno.

Data la possibilità per i tipi di persone di tipo mailico di oscurare l'URL usando HEX o altri metodi di codifica - stai inseguendo una tana di coniglio cercando di convalidare qualsiasi cosa diversa dal semplice formato.

Vedi: link per molte ragioni non per provare e analizzarli.

    
risposta data 23.02.2011 - 16:01
fonte

Leggi altre domande sui tag