kostenloser Webspace werbefrei: lima-city


Sichere Einträge in die MySql DB

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    vbs-linux

    vbs-linux hat kostenlosen Webspace.

    Hallo,
    es gibt ja die Funktion mysql_realescape_string(). Reicht die wenn ein User einen Eintrag in eine DB speichert oder gibt es noch Methoden, wie man das ganze noch sicherer machen kann? Wenn ja dann wäre es nett hier ein Beispiel an zu geben.

    Mfg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. a************n

    Das ganze lässt recht wenig input zu. Sollte zB. jemand wie hier code posten geht es nicht. Von daher musste mal schauen.

    Andre

    <?php
    array_walk_recursive( $_GET , 'secure_code' );//GET durchgehen
    array_walk_recursive( $_POST , 'secure_code' );//POST durchgehen
    array_walk_recursive( $_REQUEST , 'secure_code' );//REQUEST (GET + POST + COOKIES) durchgehen
    //VALIDATION OF INPUT
    function secure_code(&$v,$k) {
    	if(is_array($v)){
    		secure_code($v);
    	}else {
    		if (preg_match("/\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix",$v)){
    			echo '<h1>Invalid input</h1>';
    			exit;
    		}
    		if (preg_match("/((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/ix",$v)){
    		echo '<h1>Invalid input</h1>';
    			exit;
    		}
    		if (preg_match("/((\%3C)|<)((\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47))[^\n]+((\%3E)|>)/i",$v)){
    			echo '<h1>Invalid input</h1>';
    			exit;
    		}
    	}
    	$v = mysql_real_escape_string($v);
    	$_POST[$k] = $v;	
    }
    
    ?>


    Beitrag zuletzt geändert: 29.11.2010 15:02:43 von andre-morillon
  4. @andre-morillon: Was macht dein Code und warum sollte er sicherer sein? Ich erkenne da:
    * Eine is_array Abfrage, obwohl $v nie ein Array sein kann
    * Escaping von allen Eingaben. Dies ist immer dann nicht gut, wenn du nicht ausnahmslos alle Werte in einem MySQL Query brauchst und auch sonst nirgends verwendest
    * Erkennung von irgendwelchen seltsamen Zeichen (versteht ich nicht)
    * Schreiben aller Einträge in $_POST. Sinn? Es gibt schon Gründe, warum man nicht alles in ein Array tut, sondern $_POST und $_GET trennt...
  5. a************n

    jop hast recht, ich hab den code aus mehreren abfragen zusammen geschustert.

    Also das ganze soll CSS code aufdeken (die letzten zwei) und der erste preg_match-Aufruf soll SQL-Injection ausfindigmachen.

    Will man nur einzelne elemente prüfen muss man das ganze etwas umschreiben, sollte auch nicht so schwer sein.


    mfg André
  6. @vbs-linux: Es kommt ganz drauf an, was du sicher haben willst.

    Um SQL-Injection zu vermeiden, langt mysql_real_escape_string(). Wenn du den Text dann einfach so auf deiner Webseite ausgibts, kann er immer noch mit HTML/JavaScript/etc deine Webseite umgestalten. Dafür würde ich bei der Ausgabe noch ein htmlspecialchars() verwenden. Die beiden Funktionen sollte alle "einfachen" Angriffe aushelben.
  7. Autor dieses Themas

    vbs-linux

    vbs-linux hat kostenlosen Webspace.

    Naja, ich bin jetzt nicht der Profi der intresse daran hat seine Seite gegen Superhacker zu schützen, aber etwas Schutz muss sein.
  8. 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!