PHP und MYSQL daten auslesen und verwenden

zeRrY

Grünschnabel
Hallo,
ich habe folgendes Problem, ich soll mithilfe eines PHP Scriptes (api) Daten aus einer externen Datenbank lesen (das Script wird auf dem entfertem Rechner liegen). Diese Daten sollen nun, wenn ich die Datei von dem entferntem Rechner via Internet aufrufe , in meine eigene Datenbank übermittelt werden. Natürlich sollen die übermittelten Daten auch nicht für jeden zugänglich sein.
Ich habe mich so gut es ging informiert und habe mal angefangen ein solches Script zu schreiben, bin mir aber nicht sicher, ob dieses Verfahren "OK" ist oder ob es bessere gibt, bzw wie ich diese Daten verschlüsselt bekomme und anschließen entschlüsselt und ausgelesen.

lg, zeRrY

Code:
<?php
    $_db_host = "localhost";
    $_db_username = "username";
    $_db_passwort = "password";
    $_db_datenbank = "datenbank";

    $_link = mysql_connect($_db_host, $_db_username, $_db_passwort);

    if (!$_link)
        {
        die("Keine Verbindung zur Datenbank möglich: " .
            mysql_error());
        }
    mysql_select_db($_db_datenbank, $_link);
    
    $result = mysql_query("SELECT * FROM tbl_user");

    $recipes = array();
    while($recipe = mysql_fetch_array($result, MYSQL_ASSOC)) {
       $recipes[] = array('post'=>$recipe);
     }
 
    $output = json_encode(array('posts' => $recipes));

    echo $output;

    mysql_close($_link);
?>
 
Ob du die Daten verschlüsselt sendest oder nicht hat im Prinzip nichts damit zu tun, ob jemand anders Zugriff drauf hat.
Wenn das PHP Script auf einem öffentlich zugänglichen Rechner liegt, dann kann jeder der die Adresse vom Script kennt es aufrufen.
Noch schlimmer, von reinen PHP Scripts ohne jeglichen HTML Inhalt kann mit einigen Downloadmanagern der Quelltext runtergeladen werden, sprich jeder der die Adresse von deinem Script kennt und einen guten Downloadmanager hat, kann die Zugangsdaten deiner Datenbank auslesen.

Du musst also zuerst mal das Script selber vor unbefugten Zugriffen schützen, vielleicht mit einem HTML Formular, wo du ein Passwort eingeben musst um das Script überhaupt aufrufen zu können, dann musst du dem Script einen HTML Inhalt geben und wenn du dann noch mehr Sicherheit willst, kannst du die Daten zusätzlich noch verschlüsseln.

Das Grundgerüst würde dann etwa so aussehen:

Code:
<?php
if($_POST['passwort'] != "passwort")
{
exit;
}

// hier dein Code

exit;
?>
<! Hacker vergiss es>
 
Thomasio hat gesagt.:
Noch schlimmer, von reinen PHP Scripts ohne jeglichen HTML Inhalt kann mit einigen Downloadmanagern der Quelltext runtergeladen werden, sprich jeder der die Adresse von deinem Script kennt und einen guten Downloadmanager hat, kann die Zugangsdaten deiner Datenbank auslesen.
Solange der Server richtig konfiguriert ist, kann niemand (ohne physischen Zugriff) den Quelltext des PHP-Skriptes sehen.
Ich glaube, du meinst eher die Ausgabe des PHP-Skriptes, und das sind einige MySQL-Daten als JSON.

zeRrY hat gesagt.:
bzw wie ich diese Daten verschlüsselt bekomme und anschließen entschlüsselt und ausgelesen.
Meinst du die Daten auf Server A verschlüsseln, auf Server B (dein Skript) die Daten holen und wieder entschlüsseln?
Das geht natürlich, das würde dann eventuelles Abfangen des Netzverkehrs sinnlos machen (, solange der Angreifer nicht im Besitz des Passworts ist und der Verschlüsselungs-Algorithmus gut gewählt ist).

Wenn du den Zugriff auf das Ausführen des PHP-Skriptes (und dessen Ausgabe) verhindern möchtest, kannst du entweder eine Login-Form - wie Thomasio erwähnte - erstellen oder auch einen .htaccess-Schutz implementieren.
 
Solange der Server richtig konfiguriert ist ...

DAS ist immer die Frage.
Keine Ahnung ob sich das in letzter Zeit geändert hat, oder ob ich ausgerechnet immer an die Provider geraten bin, die es nicht richtig machen, als ich das Ganze vor ein paar Jahren getestet habe konnte ich von sämtlichen Providern die ich kenne PHP Quelltext runterladen, solange nicht wenigstens ein <!> ausserhalb vom PHP stand.
Natürlich nicht mit jedem Downloadmanager, da braucht es schon etwas Gutes, aber die Leute, die sowas probieren wollen, die haben halt genau diese.
Ich habe mir damals einfach angewöhnt grundsätzlich eine HTML Zeile unter das Ende von jedem Script zu machen, egal ob nötig oder nicht, schaden kanns nicht.
 
Zurück