Sicherheitsfrage?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sicherheitsfrage?

    Ich hab grad ein Script programmiert, das ich jetzt absichern will.
    dazu hab ich mir eine Funktion gebastelt:
    PHP-Code:
    function filter($str)
    {
    $suche = array ('@<script[^>]*?>.*?</script>@si',  // JavaScript entfernen
                   
    '@<[\/\!]*?[^<>]*?>@si',          // HTML-Tags entfernen
                   
    '@([\r\n])[\s]+@',                // Leerräume entfernen
                   
    '@&(quot|#34);@i',                // HTML-Entitäten ersetzen
                   
    '@&(amp|#38);@i',
                   
    '@&(lt|#60);@i',
                   
    '@&(gt|#62);@i',
                   
    '@&(nbsp|#160);@i',
                   
    '@&(iexcl|#161);@i',
                   
    '@&(cent|#162);@i',
                   
    '@&(pound|#163);@i',
                   
    '@&(copy|#169);@i',
                   
    '@&#(\d+);@e');                    // als PHP auswerten

    $ersetze = array ('',
                     
    '',
                     
    '\1',
                     
    '"',
                     
    '&',
                     
    '<',
                     
    '>',
                     
    ' ',
                     
    chr(161),
                     
    chr(162),
                     
    chr(163),
                     
    chr(169),
                     
    chr(1) );
    $str preg_replace($suche$ersetze$str);
    $str htmlspecialchars($strENT_QUOTES);
    $str addslashes($str);
    $str mysql_real_escape_string($str);
    return 
    $str;
    }

    function 
    filter_exit($str) {
    $str stripslashes($str);
    return 
    $str;

    Jetzt wolte ich fragen ob mein Script För My_SQL Injections , HTML Code und PHP-Code sicher ist!?
    ich wende das immer so an:
    PHP-Code:
    $var1 filter($_POST['var1']);
    $var2 filter($_POST['var2']);
    $var3 filter($_POST['var3']);
    //usw
    //dann wird das in MySQL eingetragen
    mysql_query("INSERT INTO `******` ( `tbl1` , `tbl2` , `tbl3` ) VALUES ($var1$var2$var3, ) ");

    Um es anzuzeigen mache ich das mit filter_exit...

  • #2
    Warum so umständlich? Es reicht doch, für Queries mysql_real_escape_string zu verwenden, bei der Ausgabe genügt htmlspecialchars, oder nicht?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Naja
      mit preg_replace()
      filter ich das HTML
      mit Adslashes... ka ich hab irgendwo gelesen das man das bei SQL Abfragen machen solte

      Kommentar

      Lädt...
      X