Jan: Sicherheit von PHP

HI, ich habe mal eine allgemeine Frage, wie kann man php sicher gestalten?
Ich weis, dass man Php dateien auch unter .htm und .html speichern kann und dann nur die einstellungen im server zum laden vornehmen muss. Mein problem jedoch ist, wie stelle ich sicher, das kein unbefugter den Quelltext einsieht? Ich koennte ihn codieren, dann kann man aber duch eine entocierung die man benutzen muesste um ihn zu gaenglich zu machen, ihn jedoch decodieren und lesen. Eine eigene sprache erfinden um php sicherer zu machen bringts auch nicht wirklich? Also meine frage wie kann man PHP so sicher machen, dass nur der Server auf das forumlar lesen kann und kein anderer?
 ist das ueberhaupt moeglich. Denn ein codieren des forumales faellt, weg da man durch das entcodieren es so oder so lesbar machen wuerde.

Ich bitte jetzt nicht um eine antwort, wie wenn keiner den code lesen soll dann bring ihn nicht ins Netzt. Ich will ihn ja ins Netz stellen, jedoch soll nur der Server auf ihn zu greifen koennen und verarbeiten und kein unbefugter, der sich die datei durch tricks runterlaedt.(Ich weis, das der php-code NICHT im Quelltext angezeigt wird)

  1. PHP ist serverseitig, kann nicht eingesehen werden :)

    1. Leider doch, wenn man die Datei downloaded. Kann man das fuer eine Datei unterbinden oder enien Servereingrif durch Hacker und somit einen Sicherheist risko

      1. wenn jemand zugriff auf dem server erhält ist es sowie so zu spät

      2. Hallo Jan,

        Leider doch, wenn man die Datei downloaded. Kann man das fuer eine Datei unterbinden oder enien Servereingrif durch Hacker und somit einen Sicherheist risko

        MffG
        EisFuX

        --
        ... Suchmaschinen-Blog ...
      3. Hallo Jan.

        Leider doch, wenn man die Datei downloaded.

        Nein, kann man nicht. Man kann aber die von einem Script generierte Ausgabe in Form einer Datei lokal abspeichern. Was tatsächlich für die Ausgabe verantwortlich war, kannst du lokal nicht nachvollziehen.

        Kann man das fuer eine Datei unterbinden oder enien Servereingrif durch Hacker und somit einen Sicherheist risko

        Und das heißt auf Deutsch …?

        Einen schönen Donnerstag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/
        1. und das heißt auf Deutsch …?

          Ob man es verhindern kann das einer den Quelltext lokal abspeichert und oder das ein Hacker zugriff bekommt.

          1. Hallo Jan.

            und das heißt auf Deutsch …?

            Bitte entstelle nicht die Original-Zitatzeichen, danke.

            Ob man es verhindern kann das einer den Quelltext lokal abspeichert und oder das ein Hacker zugriff bekommt.

            Den Quelltext von PHP-Dateien kann man nur abspeichern, wenn

            a) der Server falsch konfiguriert wurde und die Dateien nicht mit dem für PHP passenden MIME-Typen (meist application/x-httpd-php) verarbeitet.

            b) die Dateien als PHP-Source ausgeliefert werden (meist Dateiendung .phps, MIME-Typ finde ich gerade nicht.)

            Einen schönen Donnerstag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            mathbr:del.icio.us/ mathbr:w00t/
      4. Leider doch, wenn man die Datei downloaded. Kann man das fuer eine Datei unterbinden oder enien Servereingrif durch Hacker und somit einen Sicherheist risko

        Hallo,

        Wenn das PHP Seiten sind die z.b. für eine Online Administration sind, gehören die in einen mit .htaccess und .htpasswd geschützten Ordner.

        Ansonsten ist es denke ich egal, da diese PHP Dateien ja sowieso vom demjenigen der die Seite Besucht, ausgeführt können.(zb Registrieren, einloggen, ins newsletter einschreiben usw...)

        Dann könnte es dir immer noch egal sein das jemand deinen Code einsieht.
        Oder um welche Programme handelt es sich denn eigentlich ?
        Natürlich würde ich auch keine Vertraulichen Daten dort anlegen.

        Außerdem muß man auch noch die genauen Pfadangaben zum download haben.

        gruß

        jo

        1. Oder um welche Programme handelt es sich denn eigentlich ?

          Es Handelt sich um das speichern und abrufen von Passwörtern und Usernamen, bzw. Userinformationen

          »»gehören die in einen mit .htaccess und .htpasswd geschützten Ordner.

          Wie kann ich das anstellen, einfach einen Orner mit namen .htacces erstellen? un kann php immer noch dadrauf zugreifen in dem fall?

          1. Hallo Jan.

            Wie kann ich das anstellen, einfach einen Orner mit namen .htacces erstellen?

            Keinen Ordner, sondern eine Datei.
            Siehe hierzu: <http://de.selfhtml.org/servercgi/server/htaccess.htm@title=SELFHTML: .htaccess - Server-Reaktionen kontrollieren>.
            Beachte aber, dass die Konfiguration durch die Konfigurationsdatei .htaccess von deinem Hoster erlaubt worden sein muss.

            un kann php immer noch dadrauf zugreifen in dem fall?

            PHP läuft serverseitig, dass heißt, es kann direkt auf das Dateisystem des Servers zugreifen, auf dem es läuft.

            Durch obige Datei regelst du jedoch nur Zugriffe, die über HTTP und damit dem Server eingehen.

            Damit sollte klar sein, dass sich PHP nicht im Geringsten für irgendwelche HTTP-Konfigurationen auf dem Server, auf dem es läuft, interessiert.

            Einen schönen Donnerstag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            mathbr:del.icio.us/ mathbr:w00t/
          2. echo $begrüßung;

            Es Handelt sich um das speichern und abrufen von Passwörtern und Usernamen, bzw. Userinformationen

            Dateien mit solchem Inhalt kann man bei "richtigen" Providern außerhalb des DocumentRoot ablegen. PHP hat darauf Zugriff, der Webserver liefert sie aber nicht aus.

            Beispielsweise seien die Verzeichnisse
              /kunden/jan/
              /kunden/jan/example/
            gegeben sowie die Dateien
              /kunden/jan/config.php
              /kunden/jan/example/index.php

            Der Server sei so eingestellt, dass bei einem Aufruf von http://www.example.org/... auf Dateien unterhalb von /kunden/jan/example/ zugegriffen wird. Mit anderen Worten: Das DocumentRoot zeigt auf /kunden/jan/example/

            http://www.example.org/index.php liefert das vom Script /kunden/jan/example/index.php erzeugte Ergebnis aus. Innerhalb von /kunden/jan/example/index.php kann man nun mit
              include '../config.php';
            auf die Datei
              /kunden/jan/config.php
            zugreifen, der Webserver wird sie aber nicht ausliefern. Wenn der Webserver mal wegen Fehlkonfiguration den PHP-Quelltext ungeparst ausliefert, stehen wenigstens die Zugangsdaten zur Datenbank etc. nicht mit drin.

            Dass man natürlich noch andere Sicherheitslücken einbauen kann, mit denen man beliebige andere Dateien, zu denen man Leserechte hat, im Original ausgeliefert bekommt (Stichwort Downloadscript), steht auf einem anderen Blatt.

            echo "$verabschiedung $name";

      5. Leider doch, wenn man die Datei downloaded. Kann man das fuer eine Datei unterbinden oder enien Servereingrif durch Hacker und somit einen Sicherheist risko

        Würde mich jetzt auch mal interessieren... Wie kann man sich PHP-Dateien herunterladen? Klar, FTP, aber das ist ja mit Passwort geschützt, aber sonst???

        1. Hallo e7.

          Würde mich jetzt auch mal interessieren... Wie kann man sich PHP-Dateien herunterladen? Klar, FTP, aber das ist ja mit Passwort geschützt, aber sonst???

          Ich glaube nun verstanden zu haben, was Jan meinte: normalerweise kannst du jede PHP-Datei (oder zumindest deren Ausgabe) herunter laden (dass man nur bei einem defekten Server an den Quellcode kommt, ist eine andere Sache).

          Will man dies verhindern, so muss man die PHP-Dateien vor HTTP-Zugriffen schützen.

          Einen schönen Donnerstag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/
  2. Hallo,

    HI, ich habe mal eine allgemeine Frage, wie kann man php sicher gestalten?
    Ich weis, dass man Php dateien auch unter .htm und .html speichern kann und dann nur die einstellungen im server zum laden vornehmen muss. Mein problem jedoch ist, wie stelle ich sicher, das kein unbefugter den Quelltext einsieht? Ich koennte ihn codieren, dann kann man aber duch eine entocierung die man benutzen muesste um ihn zu gaenglich zu machen, ihn jedoch decodieren und lesen. Eine eigene sprache erfinden um php sicherer zu machen bringts auch nicht wirklich? Also meine frage wie kann man PHP so sicher machen, dass nur der Server auf das forumlar lesen kann und kein anderer?

    Ich verstehe nicht so ganz, worauf du hinauswillst. Aber nehmen wir mal an, du willst ".html"-Dateien in deine PHP-Scripts einbinden, aber keiner soll diese ".html"-Dateien vom Server holen können, ohne den Umweg über das PHP-Script zu machen.

    1.) Die einfachste (besser: primitivste) Lösung ist:
    a) Ändere die Endung der ".html"-Datei in ".php".
    b) Schreibe an den Anfang der Datei folgendenes:

      
    <?php  
    if( !defined('NUR_UEBER_MEIN_SCRIPT') ) die(); ?>  
    ?>  
    
    

    In deinem Haupt-Anzeige-Script definierst du am Anfang (vor dem include-Befehl) diese Konstante.
    Ihr Inhalt ist egal.

      
    define('NUR_UEBER_MEIN_SCRIPT', 0);  
    // weiter im Script  
    ...  
    include('pfad/irgendwas.php');  
    ?>  
    
    

    2.) Du kannst die einzubindenenden Dateien aber auch in einem Verzeichnis unterbringen, dass von außerhalb des Webservers nicht erreichbar ist.

    3.) Du legst die einzubindenen Dateien in einem speziellen Verzeichnis ab, dass mit einer ".htaccess"-Datei so eingestellt ist, dass keine Dateien von dort mit einem Web-Browser erreichbar sind. Für ".html" und ".htm" könnte .htaccess so aussehen:

      
    <Files ~ "\.html?$">  
        Order allow,deny  
        Deny from all  
    </Files>  
      
    
    

    MffG
    EisFuX

    --
    ... Suchmaschinen-Blog ...