Domanda

Come faccio a limitare i tipi di HTML che un utente può inserire in una casella di testo?Sono in esecuzione di un piccolo forum utilizzando alcuni software personalizzato che io sono il beta test, ma ho bisogno di sapere come limitare l'input HTML.Qualche suggerimento?

È stato utile?

Soluzione

io suggerirei una leggermente approccio alternativo:

  • non filtro in ingresso i dati utente (al di là di prevenzione di sql injection).dati utente deve essere mantenuto il più puro possibile.
  • filtro in uscita i dati dal database, questo è dove le cose come tag stripping, ecc..dovrebbe accadere

talmente semplice mantenere aggiornati i dati utente clean ti permette una maggiore flessibilità nel modo in cui è visualizzato.filtraggio di tutti i dati in uscita è una buona abitudine per entrare nel (lungo la mai fidarsi di dati meme).

Altri suggerimenti

Non hai dichiarato con cosa è stato creato il forum, ma se è PHP, controlla:

  

http://htmlpurifier.org/

     

Funzioni libreria: Lista bianca, rimozione, ben formata, nidificazione, attributi, cassaforte XSS, sicurezza standard

Una volta inviato il testo, è possibile eliminare qualsiasi / tutti i tag che non corrispondono al set predefinito utilizzando una regex in PHP.

Sarebbe simile al seguente:

find open tag (<)
if contents != allowed tag, remove tag (from <..>)
  1. Analizza l'input fornito e rimuovi tutti i tag html che non corrispondono esattamente all'elenco che stai autorizzando. Può essere una regex complessa oppure puoi eseguire un'iterazione con stato attraverso il carattere [] della stringa di input creando la stringa di input consentita e rimuovendo gli attributi indesiderati su tag come img.

  2. Utilizza un sistema di codice diverso (BBCode, Markdown)

  3. Trova un codice online che lo faccia già, da utilizzare come base per la tua implementazione. Ad esempio Slashcode deve eseguire questa operazione, quindi cerca la sua implementazione nel Perl e usa le regex (che presumo ci siano)

Indipendentemente da ciò che usi, assicurati di essere informato su quale tipo di contenuto HTML può essere pericoloso.

es. a < script > il tag è abbastanza ovvio, ma un < stile > tag è altrettanto negativo in IE, perché può invocare i comandi JScript.

In effetti, qualsiasi stile = " ... " l'attributo può invocare lo script in IE.

lt &; oggetto > sarebbe un altro tag di cui essere stanchi.

PHP ha una semplice funzione strip_tag per rimuovere i tag HTML. Consente di non rimuovere alcuni tag.

Esempio n. 1 strip_tags () esempio

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>

L'esempio sopra mostrerà:

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>

Personalmente per un forum, userei BBCode o Markdown perché la quantità di supporto e funzionalità fornite come l'anteprima dal vivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top