[PHP] Sicherheitslücken..?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von White_Angel, 12. Januar 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. Januar 2010
    Sicherheitslücken..?

    Hi,

    ich bin ein Anfänger in PHP und steige grade erst neu ein und ich hab schon vorher von sicherheitslücken, hacken, system gehört... aber ich konnt mir nie richtig vorstellen was in PHP sicherheitslücken sind? und wie die leute den code sehen und die lücken entdecken und darauf zugreifen können...
    da bräuchte ich mal nen schnellen crashkurs^^ um es besser zu verstehen =>
    und damit ich selber keine sicherheitslücken baue ^^
     
  2. 12. Januar 2010
    AW: Sicherheitslücken..?

    Auf milw0rm gibts nen paper zu dem Thema, welches die "Grundsicherheitslücken" erklärt.
    Englisch und nen klein bisschen PHP solltest du dafür können.

    http://milw0rm.com/papers/381
     
  3. 12. Januar 2010
    AW: Sicherheitslücken..?

    $_POST | $_GET | $_COOKIE niemals ohne vorherige konvertierung verwenden:

    richtig:
    PHP:
    $query  'SELECT * FROM tabelle WHERE foo = "'  mysql_real_escape_string ( $_POST [ 'bar' ]) .  '"' ;
    $query  'SELECT * FROM tabelle WHERE id = '  intval ( $_POST [ 'id' ]);
    falsch:
    PHP:
    $query  'SELECT * FROM tabelle WHERE foo = "'  $_POST [ 'bar' ] .  '"' ;
    $query  'SELECT * FROM tabelle WHERE id = '  $_POST [ 'id' ];
    -----------------

    includes immer prüfen:

    PHP:
    define ( 'IS_VALID' 1 );
    include 
    'datei.php' ;
    datei.php:
    PHP:
    if(! defined ( 'IS_VALID' )) exit( 'access denied!' );
    //other stuff...
    -----------------

    ordner die dem user nix angehen immer mit ner .htaccess sperren.

    Code:
    deny from all
    -----------------

    wenn du fileuploads erlaubst, immer darauf achten das aus dem ordner mit den files NICHTS über include/require eingebunden werden kann. auch nicht über hotlinking (siehe htaccess)

    -----------------

    bei sessions am besten immer nen hash der ip speichern um einen cookie/session-klau zu verhindern.
     
  4. 12. Januar 2010
    AW: Sicherheitslücken..?

    Also soll man vor jedem Query mysql_real_escape_string benutzen?
     
  5. 12. Januar 2010
    AW: Sicherheitslücken..?

    $_SERVER['PHP_SELF'] kann unter Umständen auch eine Sicherheitslücke sein!
    $_REQUEST sowieso.

    Generell gilt: Traue keinen Daten die von der Benutzerseite kommen!
     
  6. 13. Januar 2010
    AW: Sicherheitslücken..?

    Kommt auch auf dein Server an.
    - updates auf dem Server einspiele, apache2, mysql usw... (Windows-Sever immer updaten ;-))
    - Dann kommt drauf an was du programmierst.

    Bringt nichts wenn du PHP gut programmierst, aber dein Webserver oder OS hat sicherheits lücken die man dann austesten kann.
     
  7. 13. Januar 2010
    AW: Sicherheitslücken..?

    Du kannst ja direkt am Anfang die Usereingaben absichern, sollte man aber auf jeden Fall machen.
     
  8. 13. Januar 2010
    AW: Sicherheitslücken..?

    Du kannst dir auch wenn dir das zu viel schreibarbeit ist ne Funktion schreiben:

    PHP:
    function  secure ( $val ){

       if(
    is_numeric ( $val )){
        
    $ret = intval ( $val );
        }
            else{
            
    $ret = mysql_real_escape_string ( $val );
            }

    return 
    $ret ;
    }

    $name   = secure ( $_POST [ 'name' ]);  //mysql_real_escape_string
    $id         = secure ( $_POST [ 'user_id' ]);  // intval
    So hast du den ganzen Schreibkram nicht. Wie performant das ist weil ich allerdings nicht
     
  9. 13. Januar 2010
    AW: Sicherheitslücken..?

    Das ist nicht unbedingt so ganz sinnvoll. Es ist sinnvoll dort wo man nur Zahlen erwartet, die Variable in einen Integer zu konvertieren. Aber wenn man eine Zahl erwartet und deine Methode aufruft, der Benutzer aber einen String eingibt, bleibt es ein String.

    Außerdem kannst du deine mysql_real_escape_string nicht einfach so aufrufen:
    PHP: mysql_real_escape_string - Manual
     
  10. 13. Januar 2010
    AW: Sicherheitslücken..?

    dafür gibts filter:

    PHP: Filter - Manual
    hier: PHP Tutorials Examples Filtering Data with PHP
    und hier auch noch: http://devzone.zend.com/node/view/id/1113

    kann man sich viele ifs und strlens sparen.
     
  11. 13. Januar 2010
    AW: Sicherheitslücken..?

    Jaa das war mir schon klar Hapablap. Mit der Funktion meinte ich auch, er sollte wenn nur seine Datenbankeingaben Filtern. Sprich id´s und Texteingaben die via GET oder POST übermittelt werden und in die Datenbank eingetragen werden sollen. ^^
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.