replace dei tag <script></script>

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
43
Massa, Italy
Salve, ho questo codice:

PHP:
function bbcode($text)
{ 
  $bbcode = array("<script>", "</script>");
  $htmlcode = array("&lt;", "&gt;");
  $newtext = str_replace($bbcode, $htmlcode, $text);
  $newtext = nl2br($newtext);//second pass
  return $newtext;
}

Pero non so se è giusto..

quindi come posso fare che la persona può inserire tutto l'html ma non può inserire i tag <script></script> <iframe></iframe>
per la sicurezza che qualcuno potrebbe mettere dei virus.?

grazie mille.
 
Per raggiungere il tuo scopo, abolire soltanto il tag script non è sufficiente.

A questo punto ti si pongono due alternative:
  1. Filtrare tutto ad eccezione di pochi tag di formattazione accuratamente selezionati
  2. Comporre un filtro generico di tutte le possibili componenti nocive che possono portare ad attacchi XSS

Nel primo caso, molto semplicemente, puoi affidarti alla funzione strip_tags() che PHP offre nativamente.

Nel secondo caso, la questione è molto complessa di suo e lo è ancora di più se sei un neofita nel settore e di conseguenza la scelta più pratica diventa l'utilizzo di una libreria come HTML Purifier che, in poche righe di codice, ti permette di filtrare tutta la parte nociva che può essere introdotta tramite html.
 
scusa, cosi:

PHP:
<?php
$html = '<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>
           Ciao
        </title>
        <script>
            alert("Ciao!");
        </script>
    </head>
    <body>
        <h2>Ciao</h2>
        <script>
            alert("Ciao!");
        </script>
        <script>
            alert("Ciao!");
        </script>
    </body>
</html>
';

$html = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $html);

echo $html;

?>

non va bene?

sai perché non voglio utilizzare cose di terze parti che non so nemmeno io come si utilizzano..

poi ho fatto tutto da solo senza usare cose di altri.

per i iframe come posso fare?

grazie mille e buona serata.
 
ciao nel link che mi hai dato di strip_Tags,
ho trovato questo codice va bene?

PHP:
<?php 
function html2txt($document){ 
$search = array('@<script[^>]*?>.*?</script>@si',  // Strip out javascript 
               '@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags 
               '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly 
               '@<![\s\S]*?--[ \t\n\r]*>@'         // Strip multi-line comments including CDATA 
); 
$text = preg_replace($search, '', $document); 
return $text; 
} 
?>
 

Discussioni simili