kostenloser Webspace werbefrei: lima-city


htmlspecialchars ausreichend sicher?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nerdinator

    Kostenloser Webspace von nerdinator, auf Homepage erstellen warten

    nerdinator hat kostenlosen Webspace.

    Hallöchen,

    ich überlege mir seit einiger Zeit, ob man nicht eine allgemeine Funktion schreiben sollte, um z.b. PHP- und HTML-Tags bei Gästebuch-Einträgen zu entfernen. Als erstes dachte ich an etwas wie strip-tags, was aber den Nachteil hat, dass so evtl. ein paar Text-Teile fehlen. Nun bin ich auf htmlspecialchars gestoßen, wobei ich mich nun natürlich Frage, ob das nun sicher genug ist, oder ob hier vielleicht irgendjemanden gewisse \"Sicherheitslücken\" bekannt sind, trotz htmlspecialchars auf html- oder PHP-Tags zuzugreifen? Und was tut man am besten dagegen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich kenne zwar keine Sicherheitslücken, aber die Funktion hat mir nicht ausgereicht, deshalb habe ich die PHP-Funktion strtr() verwendet, um vor dem Eintrag in die Datenbank, bestimmte Zeichen umzuwandeln:



    $Inhalt=$_POST[\'gb\'];
     $strMapping = array (
            \'ä\' => \'ä\',
            \'ü\' => \'ü\',
            \'ö\' => \'ö\',
            \'Ä\' => \'Ä\',
            \'Ü\' => \'Ü\',
            \'Ö\' => \'Ö\',
            \'ß\' => \'ß\',
            \'\"\' => \'"\',
            \'<\' => \'&lt;\',
            \'>\' => \'&gt;\',
            \'&\' => \'&amp;\',
            \'[b]\' => \'<b>\',
            \'[/b]\' => \'</b>\',
            \'[i]\' => \'<i>\',
            \'[/i]\' => \'</i>\',
            \'[u]\' => \'<u>\',
            \'[/u]\' => \'</u>\',
            );
     $Inhalt = strtr ( $Inhalt, $strMapping );


    Auf diese Weise habe ich auch gleich BBC-Codes eingerichtet.


    Beitrag geändert: 6.6.2008 10:16:05 von rdcommunity


    Beitrag geändert: 6.6.2008 10:17:06 von rdcommunity
  4. Autor dieses Themas

    nerdinator

    Kostenloser Webspace von nerdinator, auf Homepage erstellen warten

    nerdinator hat kostenlosen Webspace.


    $Inhalt=$_POST[\'gb\'];
     $strMapping = array (
            \'ä\' => \'&auml;\',
            \'ü\' => \'&uuml;\',
            \'ö\' => \'&ouml;\',
            \'Ä\' => \'&Auml;\',
            \'Ü\' => \'&Uuml;\',
            \'Ö\' => \'&Ouml;\',
            \'ß\' => \'&szlig;\',
            \'\"\' => \'&quot;\',
            \'<\' => \'&lt;\',
            \'>\' => \'&gt;\',
            \'&\' => \'&amp;\',
            \'[b]\' => \'<b>\',
            \'[/b]\' => \'</b>\',
            \'[i]\' => \'<i>\',
            \'[/i]\' => \'</i>\',
            \'[u]\' => \'<u>\',
            \'[/u]\' => \'</u>\',
            );
     $Inhalt = strtr ( $Inhalt, $strMapping );


    Auf diese Weise habe ich auch gleich BBC-Codes eingerichtet.


    Prinzipiell nicht schlecht, aber da ich die Funktion auf viele Eingaben verwenden möchte sollte die Funktion so allgemein wie möglich gehalten werden. Z.b. wenn sie in einem Forum verwendet wird, möchte ich ja im Thread-Titel nicht unbedingt, dass die Leute BB-Code verwenden können. Das selbe gilt für Benutzernamen, etc.

    So würde ich für BB-Code-Umwandlung eine Extra-Funktion schreiben.


    Beitrag geändert: 6.6.2008 10:34:04 von nerdinator
  5. Also ersteinmal kommt es darauf an, was du alles Verwendest..
    Post, Get, Sessions, Cookies oder gar Datenbanken?

    Für mein neues Gästebuch, welche ich gerade schreibe, Prüfe ich ersteinmal, ob die eingegebenen Daten einer Gewissen Syntax entsprechen, z.B. bei der Mail adresse, ob es den Anbieter überhaupt gibt sowie, ob der aufbau der mail adresse überhaupt korrekt ist (z.B. das @ zeichen etc.) desweiteren nutzte ich BBCodes, wobei ich mir sagen lassen habe, das z.B. bei Bildern auch hier eine Überprüfung stattfinden sollte um keine \"bösen\" Scripte einbauen zu können.

    Außerdem nutze ich z.B. noch folgende Funktionen:

    addslashes()
    htmlspecialchars()
    htmlentities()
    mysql_real_escape_string()

  6. b*****m

    Die Funktion htmlspecialchars() reicht eigentlich für die meisten Zwecke, weil Anführungszeichen und < sowie > abgefangen werden.
  7. p***********d


    Ich kenne zwar keine Sicherheitslücken, aber die Funktion hat mir nicht ausgereicht, deshalb habe ich die PHP-Funktion strtr() verwendet, um vor dem Eintrag in die Datenbank, bestimmte Zeichen umzuwandeln:



    $Inhalt=$_POST[\'gb\'];
     $strMapping = array (
            \'ä\' => \'&auml;\',
            \'ü\' => \'&uuml;\',
            \'ö\' => \'&ouml;\',
            \'Ä\' => \'&Auml;\',
            \'Ü\' => \'&Uuml;\',
            \'Ö\' => \'&Ouml;\',
            \'ß\' => \'&szlig;\',
            \'\"\' => \'&quot;\',
            \'<\' => \'&lt;\',
            \'>\' => \'&gt;\',
            \'&\' => \'&amp;\',
            \'[b]\' => \'<b>\',
            \'[/b]\' => \'</b>\',
            \'[i]\' => \'<i>\',
            \'[/i]\' => \'</i>\',
            \'[u]\' => \'<u>\',
            \'[/u]\' => \'</u>\',
            );
     $Inhalt = strtr ( $Inhalt, $strMapping );


    Auf diese Weise habe ich auch gleich BBC-Codes eingerichtet.


    Beitrag geändert: 6.6.2008 10:16:05 von rdcommunity


    Beitrag geändert: 6.6.2008 10:17:06 von rdcommunity

    Ähm, aber Anführungszeichen und <irgendwas> werden doch gar nicht escaped?
    \'<\' => \'<\',
    da bleibts ja gleich...
  8. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.



    Ich kenne zwar keine Sicherheitslücken, aber die Funktion hat mir nicht ausgereicht, deshalb habe ich die PHP-Funktion strtr() verwendet, um vor dem Eintrag in die Datenbank, bestimmte Zeichen umzuwandeln:



    $Inhalt=$_POST[\'gb\'];
     $strMapping = array (
            \'ä\' => \'&auml;\',
            \'ü\' => \'&uuml;\',
            \'ö\' => \'&ouml;\',
            \'Ä\' => \'&Auml;\',
            \'Ü\' => \'&Uuml;\',
            \'Ö\' => \'&Ouml;\',
            \'ß\' => \'&szlig;\',
            \'\"\' => \'&quot;\',
            \'<\' => \'&lt;\',
            \'>\' => \'&gt;\',
            \'&\' => \'&amp;\',
            \'[b]\' => \'<b>\',
            \'[/b]\' => \'</b>\',
            \'[i]\' => \'<i>\',
            \'[/i]\' => \'</i>\',
            \'[u]\' => \'<u>\',
            \'[/u]\' => \'</u>\',
            );
     $Inhalt = strtr ( $Inhalt, $strMapping );


    Auf diese Weise habe ich auch gleich BBC-Codes eingerichtet.


    Beitrag geändert: 6.6.2008 10:16:05 von rdcommunity


    Beitrag geändert: 6.6.2008 10:17:06 von rdcommunity

    Ähm, aber Anführungszeichen und <irgendwas> werden doch gar nicht escaped?
    \'<\' => \'<\',
    da bleibts ja gleich...


    Das ist ein Forenbug, eigentlich sind & gt; und & lt; gemeint, aber das Forum escape die & eben nicht -.-
  9. Autor dieses Themas

    nerdinator

    Kostenloser Webspace von nerdinator, auf Homepage erstellen warten

    nerdinator hat kostenlosen Webspace.


    Also ersteinmal kommt es darauf an, was du alles Verwendest..
    Post, Get, Sessions, Cookies oder gar Datenbanken?

    Für mein neues Gästebuch, welche ich gerade schreibe, Prüfe ich ersteinmal, ob die eingegebenen Daten einer Gewissen Syntax entsprechen, z.B. bei der Mail adresse, ob es den Anbieter überhaupt gibt sowie, ob der aufbau der mail adresse überhaupt korrekt ist (z.B. das @ zeichen etc.) desweiteren nutzte ich BBCodes, wobei ich mir sagen lassen habe, das z.B. bei Bildern auch hier eine Überprüfung stattfinden sollte um keine \"bösen\" Scripte einbauen zu können.

    Außerdem nutze ich z.B. noch folgende Funktionen:

    addslashes()
    htmlspecialchars()
    htmlentities()
    mysql_real_escape_string()




    Also bis auf mysql_real_escape_string() sind mir die alle geläufig, aber müssen/sollten die alle auf einmal angewendet werden?

    Zur \"Technologie\": Ich möchte diese Funktion wie schon gesagt möglichst universell schreiben. Also sollten Sessions, Cookies sowie Datenbanken(SQL?) berücksichtigt werden.

    Die Prüfung von Email-Adressen ist bei mir noch in weiter ferne, da ich bisher immer und immer wieder Probleme hatte, überhaupt Emails zu versenden (also über php etc.). Aber für sowas wird wie beim BB-Code dann später eine extra Funktion geschrieben, welche das regeln wird. Vorerst geht es mir darum, sichtbare Daten, wie z.b. Benutzernamen, Foren- oder Gästebuchbeiträge, o.ä. von html- und php-tags befreit werden, möglichst ohne den Beitrag zu beschneiden.
  10. Autor dieses Themas

    nerdinator

    Kostenloser Webspace von nerdinator, auf Homepage erstellen warten

    nerdinator hat kostenlosen Webspace.



    Also ersteinmal kommt es darauf an, was du alles Verwendest..
    Post, Get, Sessions, Cookies oder gar Datenbanken?

    Für mein neues Gästebuch, welche ich gerade schreibe, Prüfe ich ersteinmal, ob die eingegebenen Daten einer Gewissen Syntax entsprechen, z.B. bei der Mail adresse, ob es den Anbieter überhaupt gibt sowie, ob der aufbau der mail adresse überhaupt korrekt ist (z.B. das @ zeichen etc.) desweiteren nutzte ich BBCodes, wobei ich mir sagen lassen habe, das z.B. bei Bildern auch hier eine Überprüfung stattfinden sollte um keine \"bösen\" Scripte einbauen zu können.

    Außerdem nutze ich z.B. noch folgende Funktionen:

    addslashes()
    htmlspecialchars()
    htmlentities()
    mysql_real_escape_string()




    Also bis auf mysql_real_escape_string() sind mir die alle geläufig, aber müssen/sollten die alle auf einmal angewendet werden?

    Zur \"Technologie\": Ich möchte diese Funktion wie schon gesagt möglichst universell schreiben. Also sollten Post, Sessions, Cookies sowie Datenbanken(SQL?) berücksichtigt werden.

    Die Prüfung von Email-Adressen ist bei mir noch in weiter ferne, da ich bisher immer und immer wieder Probleme hatte, überhaupt Emails zu versenden (also über php etc.). Aber für sowas wird wie beim BB-Code dann später eine extra Funktion geschrieben, welche das regeln wird. Vorerst geht es mir darum, sichtbare Daten, wie z.b. Benutzernamen, Foren- oder Gästebuchbeiträge, o.ä. von html- und php-tags befreit werden, möglichst ohne den Beitrag zu beschneiden.

  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!