Ergebnis 1 bis 8 von 8

Thema: !! Etwas zur Sicherheit !!

  1. #1
    Fortgeschrittene/r
    Registriert seit
    30.09.2006
    Beiträge
    150
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard !! Etwas zur Sicherheit !!

    Hallo zusammen, habe mal wieder langeweile und habe mich entschieden hier ein paar tips zum Thema Sicherheit zu Posten !

    Dateiattribut

    Den größten Fehler den Anfänger machen ist Ihre Scripte der ganzen Welt zugänglich zu machen mit dem Dateiattribut 777 ( Chmod ) , dann haben noch einige keine Index.htm Datei in Ihrem root Verzeichnis, und so kann sich ein Angreifer in aller ruhe im Dateisystem umschauen ! Wenn der Angreifer eine Datei findet die sql oder My Connect.php heist wird er versuchen diese auszulesen mit fsockopen da die Datein den Attribut 777 haben sind diese Dateien auch für die Öffentlichkeit zugänglich und er kann sie auslesen, umschreiben oder sogar löschen ! Damit bekommt er unter umständen eure
    Zugangsdaten für die Datenbank das noch verherende folgen haben kann als wenn der Angreifer nur die Datei umschreibt !

    Zudem solltet Ihr eure wichtigsten Dateien wie z.b. Dateien die eure Zugangsdaten für die Datenbank enthalten nicht connect, admin oder sql.php usw. nennen denn Logischerweise möchte man mit der robots.txt Datei verhindern das Suchmaschienen die durchsuchen nicht weil der crawler die auslesen könnte nein weil der crawler dort nichts zu suchen hat ! Worauf ich hinaus will ist das Hacker als erstest in diese Datei schauen um wichtige Daten zu finden wenn man z.b. eine Index.php Datei im root Verzeichnis hat und er es nicht einsehen kann !

    MySQL

    SQL - Injection:

    Nehmen wir an das wir eine HP haben wo der Content aus eine Datenbank kommt !

    Daher haben wir z.b. solche Links mit fogende Adresse

    index.php?cat=Startseite

    Der Code um die Einträge aus der Datenbank zu holen könnte so aussehen :

    Code:
       //connection usw.
       $sql="SELECT * FROM Contents WHERE id='".$_GET['cat']."' LIMIT 1";
       $result=mysql_query($sql)or die(mysql_error());
       $row=mysql_fetch_assoc($result);
    
       echo$row['Inhalt'];
    So sollte man das auf gar kein fall machen !

    Nur wie Lösen wir das Problem ? Die folgenden funktionen sollten hilfreich sein :

    mysql_real_escape_string, get_magic_quotes_gpc und die methode Typcasting !

    wie folgt

    Code:
    If(get_magic_quotes_gpc()) {
    
        stripslashes($_REQUEST);
    
    }
    
        $sql="SELECT * FROM Contemts WHERE id='".(INT)$_GET['cat']."' LIMIT 1";
        $result=mysql_query($sql)or die(mysql_error());
        $row=mysql_fetch_assoc($result);
    
        echo$row['Inhalt'];
    Mit der Methode Tycasting (INT) können wir verhindern das der User den
    Parameter Manipuliert da nur noch eine Zahl möglich ist, wenn der Parameter keine Zahl ist wird eine Fehlermeldung ausgeben und das Script wird abgebrochen ! Deshalb solltet Ihr immer Primary Key`s ( ID ) für Einträge nehmen ! Die Links sehen dann so aus :

    index.php?cat=37


    Denn es ist möglich das ein Angreifer sich alle einträge zeigen lässt z.b. so :

    Code:
        $sql="SELECT * FROM Contemts WHERE id=0 OR 1=1 ";
    somit ist die WHERE Klausel immer wahr !

    die Linkadresse könnte so aussehen :

    index.php?cat=0+OR+1=1

    Und die oben genannte Lösung kann solch eine Manipulation verhindern !
    Ein Angreif könnte sonst z.b. mit der Funktion UNION auch SQL Anweisungen verknüpfen ( einfach über den GET Parameter mit dran hängen )

    Wenn man User Eingaben an die Datebank verschicken muss sollte man die eingaben immer Filtern z.b. so :

    Code:
        $sql="SELECT * FROM Login WHERE user='".mysql_real_escape_string($_GET['user'])."' AND       pass='".mysql_real_escape_string($_GET['pass'])."' LIMIT 1";
    Damit schützt man sich vor Angriffen dieser art :

    Code:
        $_GET['user']='webcool';
    
        $_GET['pass']='' OR ''='';
    Mit diesen Manipulierten Parametern kann der Angreifer sich ohne Passwort einloggen wenn man die Eingaben nicht mit mysql_real_escape_string überprüft !

    XSS (Cross-Site-Scripting)

    XSS ist sehr weit verbreitet, meistens sind Foren davon betroffen !

    Wenn man eine Usereingabe erwartet sollte man Sie für die Anzeige auf dem Bildschirm vorbereiten.

    z.b so:

    Code:
        echo htmlspecialchars(strip_tags($_GET['Eingabe'], ENT_QUOTES));
    Mit der Funktion strip_tags() Filtern wir alle SGML-Tags also alles was zwischen < und > Steht.

    Und mit dem Optionalen Parameter ENT_QUOTES geben wir an wie PHP diese " und diese ' Zeichen Filtern soll.

    Mit htmlspecialchars() wandeln wir diese < > und z.b. dieses & Zeichen in HTML um ( &amp; )!

    Denn es ist auch möglich JavaScript-Codes ohne den <Script> Tag einzubinden.

    Ein XSS-Angriff in einem Forum könnte so aussehen:

    Aber in diesen Forum könnt Ihre diesen Trick knicken und in den meisten anderen auch, dieses Problem haben nur ältere Versionen der gängigen PHP-Foren.
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Suchst du kostenlose Scripte ?

    dann klick hier
    http://rescue-center.de

  2. #2
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Recht netter Text, du solltest jedoch auch mod_rewrite erwähnen, das von immer mehr Servern unterstüzt wird.

  3. #3
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    30.09.2006
    Beiträge
    150
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich habe gerade noch ein paar Fehler beseitigt und ergänzungen beigefügt !

    Zu mod_rewrite muss ich mir noch was zu aus decken

    Danke für den Tip
    Suchst du kostenlose Scripte ?

    dann klick hier
    http://rescue-center.de

  4. #4
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Wo wir grad dabei sind.
    Gibt es noch eine andere Möglichkeit als apache_get_modules() um zu überprüfen, ob der server mod_rewrite unterstützt?
    Mein Server kennt apache_get_modules() leider nicht.

  5. #5
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    30.09.2006
    Beiträge
    150
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ja kann man apache_get_modules() liefert ja ein array mit den möglichen modulen zurück, wenn die function nicht zur verfügung steht gibts ein nettes Beilspiel auf der manual seite wie man das noch lösen kann !

    Code:
    
    <?php
    
    function get_modules &#40;$fname="/etc/httpd/httpd.conf"&#41;&#123;
       if &#40;is_readable&#40;$fname&#41;&#41;&#123;
         $fcont = file&#40;$fname&#41;;
         if &#40;is_array&#40;$fcont&#41;&#41;&#123;
             foreach &#40;$fcont as $line&#41;&#123;
                 if &#40;preg_match &#40;"/^LoadModule\s*&#40;\S*&#41;\s*&#40;\S*&#41;/i",$line,$match&#41;&#41;&#123;
                     $return&#91;$match&#91;2&#93;&#93; = $match&#91;1&#93;;
                 &#125;
             &#125;
         &#125;
       &#125;
       return $return;
    &#125;
    
    ?>
    Suchst du kostenlose Scripte ?

    dann klick hier
    http://rescue-center.de

  6. #6
    Shogun Avatar von DarkSyranus
    Registriert seit
    28.03.2006
    Ort
    ::1/128
    Alter
    25
    Beiträge
    3.446
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Steht auf der php.net Seite. *gg*
    Hab ich auch schon versucht.
    Gibt garkeine Ausgabe.
    Naja, egal.

  7. #7
    Kaiser(in)
    Registriert seit
    09.12.2005
    Alter
    29
    Beiträge
    2.496
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    schau mal in der phpinfo nach, da sollte das auch stehen (tuts bei mir zumindest =) )
    sonst ist das tutorial recht anschaulich gemacht!
    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  8. #8
    Forum Guru
    Registriert seit
    04.04.2005
    Beiträge
    4.139
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Beim Beispiel wie man es nicht machen sollte steht mysql_quer( statt query.

    ModRewrite:

    Wenn der Server es unterstützt kann man schöne URLS's machen

    Code:
    RewriteEngine On
    RewriteRule ^index\.html$ index.php?s=0 &#91;L&#93;
    RewriteRule ^news\.html$ index.php?s=1 &#91;L&#93;
    Der User sieht index.html aber im Hintergrund läuft es über index.php?s=0.
    So als kleines Beispiel
    Facebook Gruppe: Böses Encoding

Ähnliche Themen

  1. php gästebuch-sicherheit
    Von gast im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 7
    Letzter Beitrag: 19.11.2007, 15:23
  2. Sicherheit vor SQL Injections?
    Von pattiheonly im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 24.09.2007, 13:48
  3. sicherheit
    Von tepilta im Forum Off Topic und Quasselbox
    Antworten: 6
    Letzter Beitrag: 13.06.2006, 14:13
  4. php sicherheit
    Von pindakaas im Forum Tutorials, Workshops und Anleitungen
    Antworten: 2
    Letzter Beitrag: 02.03.2006, 17:28
  5. sicherheit bei includes
    Von BendOr im Forum Tutorials, Workshops und Anleitungen
    Antworten: 0
    Letzter Beitrag: 14.01.2006, 18:57

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •