- Home
- Categorie
- Coding e Sistemistica
- Coding
- Disattivare codice Html
-
Disattivare codice Html
Salve a tutti,
il mio secondo problema è proprio la disattivazione del codice html nel form "Commenti" mi spiego meglio.
Sto creando una gestione di articoli tra cui se l'utente vuole commentare, commenta sotto l'articolo (tipo blog) ovviamente tutto funziona, però la sicurezza in php deve sempre esserci, quindi ho provato "Diciamo ad attaccare il mio stesso sito web" e ho scoperto che è vulnerabile al codice Html, ovvero se inserisco ad esempio "nel campo commenti" il codice di reindirizzamento o qualsiasi altro codice html, esso le esegue.Ho cercato di creare una variabile
[PHP] $not_accept = "parole_da_disabilitare"; [/PHP]
che conteneva appunto le parole chiavi che non dovevano essere inserite nel database, e con un if creavo la condizione
[PHP] if($not_accept)
{
print "Errore codice html";
}
else
{
// istruzioni da eseguire
}
[/PHP]
Però da problemi, cioè anche se non scrivo codice html ma semplice testo mi stampa sempre questo messaggio di errore
-
Pulisci i dati con strip_tags oppure htmlentities oppure htmlspecialchars.
-
@tigrone said:
Pulisci i dati con strip_tags oppure htmlentities oppure htmlspecialchars.
Ah si giusto proverò con htmlspecialchars... ma se invece voglio eliminare solo 1 parte del codice html ? hai qualche idea ?
-
str_replace
-
Puoi usare anche questo codice per ripulire i dati mandati in post o get da tutto l'html:
[PHP]
$stringa=@preg_replace('#<(.*?)>#i','',$stringa);
[/PHP]
-
Puoi farmi un esempio con str_replace
-
$stringa='ciao mondo';
$stringa=str_replace('ciao','porco',$stringa);Risultato: 'porco mondo'
-
ah ok ora è chiaro
-
Purtroppo non so perchè ma la funzione str_replace si comporta in maniera anomala, mi spiego meglio.
Ho creato un argomento di tipo array con questo codice
[php]
$testo = "$_POST[Annuncio]";
$cerca = array("<h1>","<center>");
$sostituisci = array("<u>","<b>");
echo str_replace($cerca, $sostituisci, $testo);
[/php]
alla stampa realmente sostituisce i caratteri, ma dopo che si salvano sul database e stampati in home "<h1>" rimane uguale e non viene sostituito....
-
Ciao infosicurezza,
non hai sovrascritto la variabile $testo, forse inserisci nel database quella non sostituita.
-
mmmmm....
Guarda anche te...
[php]
if(isset($_POST['invio']))
{
// SE IL MODULO VIENE INVIATO...
[/Php][php]
$testo = "$_POST[Annuncio]";
$cerca = array("<h1>","<center>");
$sostituisci = array("<u>","<i>");
echo str_replace($cerca, $sostituisci, $testo);
[/PHP]
Poi eseguo i controlli vari per l'inserimento dei campi...
ed infine l'inserimento sul database sostituendo la variabile con $testo che deve contenere i caratteri sostituiti con la funzione str:replace[Php]
$query = "insert into articoli" .
"(Nome,Titolo,Annuncio)" .
"VALUES('".$_REQUEST['Nome']."',
'".$_REQUEST['Titolo']."',
'".$testo."')";
[/php]
-
Al posto di:
[php]
echo str_replace($cerca, $sostituisci, $testo);
[/php]
Metti:
[php]
$testo = str_replace($cerca, $sostituisci, $testo);
[/php]
-
Cosi sembra quasi funzionare, ma mi altera i caratteri dei post successivi... come faccio poi a sostituire il <font size="" color=""> ecc ? perchè non ne vuole proprio sapere! mentre invece i singoli tag come <center> <h1> vedo che li sostituisce
-
Ho risolto con la funzione
[php] strip_tags [/php]
posto il codice per qualcuno che ha lo stesso problema
[php]
//Dati inviati via post dal modulo
$testo = "$_POST[Annuncio]";
$testo = strip_tags($testo,"<b><i><u>");
[/php]
Grazie ciaoo.