Ergebnis 1 bis 28 von 28

Thema: XML Ausgabe

  1. #1
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard XML Ausgabe

    Tag zusammen,

    könnt ihr mir sagen wo der Fehler liegt ? Ich finde ihn einfach nicht:

    PHP-Code:
    <?php

    $server 
    "";
    $username "";
    $password "";
    $database_name "";

    header 'Content-type: text/xml' );


    mysql_connect $server$username$password ) or die ( mysql_error () );
    mysql_select_db $database_name );

    $user mysql_real_escape_string ($_GET ['user']);

    $sqlResult mysql_query "SELECT username, message_count, last_activity, user_state, alerts_unread, conversations_unread 
      FROM xf_user WHERE username='
    $user'" );

    if (! 
    $result) {
     
    $error mysql_error ();
     echo 
    "<error>$error</error>";
    } else if (
    $row mysql_fetch_array $sqlResult )) {
     echo 
    "<user>\n";
     foreach ( 
    $row as $column => $value ) {
      echo 
    "\t<$column>$value</$column>\n";
     }
     echo 
    "</user>\n";
    } else {
     echo 
    "<noUser/>";
    }

    mysql_free_result($result);
    mysql_close ();

    ?>

  2. #2
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    funktioniert mittlerweile.

    Fehler war sqlResult was nur result sein darf und am ende hat noch die ausgabe gefehlt. und doch die ausgabe ist xml, warum so, naja wer will schon sql injections.

    Framework:

    so ist das nunmal wenn man ne bridge braucht und keine extra erweiterung schreiben will.
    Geändert von Slind (22.07.2013 um 21:57 Uhr)

  3. #3
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    das script funktioniert für mich so weit gut. ob das jetzt "valides xml" ist oder nicht ist in dem sinne egal das es mit java gut ausgelesen werden kann. sollte na noch xss mäßig was möglich sein wäre es natürlich super wenn ihr mir da nen kurzen hinweis gebt.

    Moderation: Wir haben den Text zu Leo Unglaubs Verhalten entfernt um den Thread hier wieder zu säubern, so dass das Ursprungsthema sachlich weiter diskutiert werden kann. Danke fürs Verständnis. Die restlichen Beiträge rund um sein Verhalten wurden in ein gesondertes Thread ausgelagert.

  4. #4
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    vielen Dank für die konsturktive Antwort.

    Würdest du vorschlagen valides XML zu verwenden und es XSS sicher zu schreiben oder etwas eigenes. Es geht im Ende nur darum das eine JavaAnwendung kleine Teile aus der Datenbank auslesen kann ohne SSH Tunnel.

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Zitat Zitat von Slind Beitrag anzeigen
    Würdest du vorschlagen valides XML zu verwenden
    Gibt es denn irgend etwas, was gegen valides XML sprechen würde?
    Auch, wenn Dein Java-Programm mit dem nicht validen XML klar zu kommen scheint, kann es ja nicht schaden, es richtig zu machen.

    Ich würde mir in diesem Zusammenhang mal XMLWriter anschauen.

    und es XSS sicher zu schreiben
    Ich bin mir nicht ganz sicher, was Du in diesem Zusammenhang mit XSS meinst. Meinst Du nicht eher SQL injection?

    Ja! Natürlich sollte man darauf achten. Immer! Daher ja auch oben der Hinweis auf das Framework, das Dich dabei unterstützt.

    Es geht im Ende nur darum das eine JavaAnwendung kleine Teile aus der Datenbank auslesen kann ohne SSH Tunnel.
    Den Punkt Autorisierung hast Du dabei auch auf dem Schirm, oder kann das Skript jeder aufrufen?

    Ich denke hier an folgendes: Wenn ich als nicht autorisierter das Skript aufrufen kann und dann u.A. als Antwort bekomme,
    ob ein Account existiert oder nicht ("<noUser/>"), dann hätte ich auf dem Weg zum Einbruch, schon mal die Hälfte geschafft;
    jetzt bräuchte ich "nur noch" das zugehörige Passwort.

    Ausserdem -- selbst ohne Einbruchsversuch -- wengeht es etwas an, welche User auf einer Website registriert sind?
    (siehe dazu vielleicht http://de.wikipedia.org/wiki/Information_Disclosure)

  6. #6
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    ok, vielen Dank.

    die Benutzernamen sind so oder so öffentlich zugänglich, da es sich um ein Forum hält. Aber ich werde da wohl noch eine Autorisierung einbauen. Wie löst man sowas am besten, nur die IP wovon das Script ausgeführt werden darf zu lassen (.htaccess?)?

    ist das wie das script aktuell ist nur ein schönheitsfehler oder gibt es noch weitere punkte es valide zu machen, denn es funktioniert, komme mit dem xml writer nicht so klar ?
    Geändert von Slind (26.07.2013 um 14:32 Uhr)

  7. #7
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Die XML-Version und das Encoding wurden ja bereits angesprochen. Außerdem benötigt das XML Dokument einen Root-Knoten, d.h. Du solltest Deine <user> noch in (z.B.) <users> einpacken.

    Ob der .htaccess IP-Adressen Filter sicherheitstechnisch als hinreichend zu betrachten ist, kann ich Dir nicht sagen. Ich sehe aber nicht, wo er ein zusätzliches Problem verursachen könnte.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  8. #8
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    was wäre denn eine gute Variante nur bestimmten Servern den Zugriff zu erlauben ?

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Wenn ich da eine "copy/paste sichere" Variante zur Hand hätte, hätte ich es bereits geschrieben.

    Wenn Du mit dem XMLWriter -- wo IMHO unmissverständlichen Beispiele in der Doku dabei sind -- nicht klar kommst, dann wird es hier auch nicht einfach. Sorry!
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  10. #10
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Welche Contao Version verwendet du?

    Gesendet von meinem Nexus 4 mit Tapatalk 4 Beta
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  11. #11
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    3.0

  12. #12
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Schau bitte mal (https://gist.github.com/katgirl/6094988), ich habe gerade mal in einer halben Stunde unter Verwendung des Frameworks eine 10 Zeilen längere Version geschrieben.
    Die ist noch lange nicht schön und sicher findet Leo auch hier noch die eine oder andere Verbesserung (CODENAME: BLONDI)
    Aber die Verwendung der API von Contao garantiert mir zum einen die korrekte Verbindung zur Datenbank und fängt SQL-Injection ab. Weiterhin verwendet ich die Klasse Input, die übergebene Parameter überprüft. Somit brauche ich mir darum schon mal keinen Kopf mehr zu machen.
    Dann verwende noch einfach die in PHP zur Verfügung stehende XML Klasse, damit schreibst ich relative einfach sauberen XML-Code.

    Also bitte keine Diskussion mehr
    Ich habe gerade den Gegenbeweis angestrebt, das es sogar einfacher sein kann unter Verwendung des Frameworks Code zu schreiben, der dann schon viele Sicherheitspunkte erfüllt.

    Die weitere Absicherung könntest du noch über einen Hash machen, so das nur Berechtigte die Funktion nutzen können.

    Wenn du das Ganze als Modul baust und könntest du dafür ein Feld in dem Modul vorsehen, so das du ohne in den Code zu gehen den Hash schnell aktualisieren kannst. z.B. Könnte man auch viele Hashes verwenden um so z.B einen bezahlten Dienst aus der Schnittstelle zu machen. Ideen gibt es sicher genug. Nur bitte verbreite keine riskanten Erweiterungen, da dieses immer sehr schnell auf das eigentliche Produkt (in dem Fall Contao) zurückfällt.

    Gruß Kirsten
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  13. #13
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    vielen Dank.

    Nach was müsste ich denn wegen der Autorisierung suchen ? Komme da mit Begriffen wie php server autorisierung... nicht weiter bei google. Oder kennt ihr nen tollen Artikel oder sowas der gut erklärt wie man bei der Kommunikation zwischen Server am besten vorgeht, so das es sicher ist?

    An sich wäre es für mich am einfachsten die Datenbank an den dedicated Server zu tunneln, dann kann der dort direkt die Benutzerdaten überprüfen. Was ich daran jedoch nicht mag, ist das andere Leute Zugriff auf den Root haben und ich keine Ahnung habe wie sicher der privat key bei denen aufgehoben ist. Der Key funktioniert zwar nur mit einem eingeschränkten Konto, aber wenn man erst mal drin ist...

  14. #14
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Willst du dich mit dem Server authentifizieren oder mit der Contao Installation? Für die Contao Installation gibt es Extensions die dir die notwendige Sicherheit bieten und eine Kommunikation erlauben. Unter sicheren Gesichtspunkten.

  15. #15
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich hatte da nur an sowas wie einen Token gedacht.

    z.B. http://www.domain.com/system/modules...60692b2914d950

    Den du dann in Contao hinterlegst z.B. in der Konfiguration (den encryptionKey würde ich auf keinen Fall nehmen)
    dann kannst du diesen noch prüfen.

    Oder halt ein Array von Keys, wenn es mehrere geben soll darauf zugreifen. Dann würde ich aber den Key dafür verwenden, weil die Prüfung darauf schneller ist als auf das Value.

    Nichts desto trotz kannst du die schon angesprochenen Erweiterungen nutzen, was auch ein sehr guter Weg ist.
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  16. #16
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    Danke, die Erweiterung würde für Contao funktionieren, ich hab aber auch noch ein Forum (xenforo) wo ich die gleiche Abfrage brauche.
    Es wäre halt super einfach wenn ich die Datenbank irgendwie sicher Tunneln könnte, dann hab ich die auf jedem Root auf nem 2. Port und kann direkt darauf zugreifen.

    Zitat Zitat von KATgirl;
    z.B. [url
    http://www.domain.com/system/modules/xml_output/UserData.php?user=kirsten&token=45d919aabb3ac6600d 60692b2914d950[/url]
    der Link ist down

  17. #17
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Zitat Zitat von Slind Beitrag anzeigen
    der Link ist down
    So ist das halt, wenn es nur ein Beispiel sein soll ;-)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  18. #18
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    539

    Standard

    Folgender Vorschlag:
    du speicherst in der Localconfig.php eine neue Variable:
    PHP-Code:
    $GLOBALS['TL_CONFIG']['xmlOutputToken'] = '6dGri6qckROpzrGpZhxG2PPuGklXK29MmaRJ5B2ixqlMHaY9k5FpwGUsuPpJWSS'
    Einen "Token" habe ich mir hier erstellt: http://gaijin.at/olspwgen.php (WPA2-Passwort)

    Am Anfang der Funktion von Kirsten schreibst du dann
    PHP-Code:
    if (\Input::get('token') == null || \Input::get('token') != sha1(\Input::get('user') . $GLOBALS['TL_CONFIG']['xmlOutputToken'])
    {
         die(
    'Missing or invalid token');

    Bei dem Aufruf übergibst du dann output.php?user=foo&token=88a7cc4c33836e955eed4edf 1378bb82c68f473c
    Also
    PHP-Code:
    sha1('foo' '6dGri6qckROpzrGpZhxG2PPuGklXK29MmaRJ5B2ixqlMHaY9k5FpwGUsuPpJWSS'); 
    Oder ist das wiederum unsicher? Beide Server haben dann nun mal den Token.

  19. #19
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    hier müsste ich dann aber unbedingt ssl verwenden oder ?

  20. #20
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    539

    Standard

    Um dann die Daten (also Userdaten) von Server zum Clienten zu verschlüsseln? Kann man machen.
    Allerdings kann man mit der sha1-Prüfsumme - wie oben verwendet - nicht einfach so den Token extrahieren, falls das deine Bedenken sind.

  21. #21
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Slind Beitrag anzeigen
    hier müsste ich dann aber unbedingt ssl verwenden oder ?
    Das würde ich bei einem System, das mit Benutzerdaten jongliert eh immer voraussetzen! Selbst ein Forum ohne Zertifikat meide ich persönlich ;-)
    Wer weiß wer da alles lauscht.
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  22. #22
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    Zitat Zitat von KATgirl Beitrag anzeigen
    Das würde ich bei einem System, das mit Benutzerdaten jongliert eh immer voraussetzen! Selbst ein Forum ohne Zertifikat meide ich persönlich ;-)
    Wer weiß wer da alles lauscht.
    Zertifikate sind halt teuer, oder habt ihr da nen guten günstigen Anbieter als Empfehlung ?

    Oder wie ist das mit rsa und http

  23. #23
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von tl_richard_user Beitrag anzeigen
    PHP-Code:
    $GLOBALS['TL_CONFIG']['xmlOutputToken'] = '6dGri6qckROpzrGpZhxG2PPuGklXK29MmaRJ5B2ixqlMHaY9k5FpwGUsuPpJWSS'
    Einen "Token" habe ich mir hier erstellt: http://gaijin.at/olspwgen.php (WPA2-Passwort)
    Wieso so kompliziert Das wird doch eh zur Verschlüsselung verwendet.

    Zitat Zitat von tl_richard_user Beitrag anzeigen
    Am Anfang der Funktion von Kirsten schreibst du dann
    PHP-Code:
    if (\Input::get('token') == null || \Input::get('token') != sha1(\Input::get('user') . $GLOBALS['TL_CONFIG']['xmlOutputToken'])
    {
         die(
    'Missing or invalid token');

    Du hast vergessen zu prüfen ob überhaupt ein Username übergeben wurde

    Dann würde ich die API zur Verschlüsselung nutzen.
    PHP-Code:
    $GLOBALS['TL_CONFIG']['xmlOutputToken'] = '6dGri6qckROpzrGpZhxG2PPuGklXK29MmaRJ5B2ixqlMHaY9k5FpwGUsuPpJWSS'

    PHP-Code:
    $token = \Input::get('token');
    $user  = \Input::get('user');
              
            if ( 
    $user === null || $token === null 
            {
                
    $this->Template = new \Template('mod_message');
                
    $this->Template->type 'error';
                
    $this->Template->message $GLOBALS['TL_LANG']['ERR']['OutputError'];
     
                return;
            }
            
            if ( ! \
    Encryption::hash($token) )
            {
                
    $this->Template = new \Template('mod_message');
                
    $this->Template->type 'error';
                
    $this->Template->message $GLOBALS['TL_LANG']['ERR']['TokenInvalide'];
     
                return;
            } 
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  24. #24
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Slind Beitrag anzeigen
    Zertifikate sind halt teuer, oder habt ihr da nen guten günstigen Anbieter als Empfehlung ?

    Oder wie ist das mit rsa und http
    https://www.startssl.com/
    https://www.cacert.org/

    bzw. gleich auf einem Asteroiden hosten, da ist immer ein Zertifikat bei der Default-Domain bei
    https://uberspace.de/dokuwiki/webserver:https#https

    30 Euro bei hosteurope finde ich im übrigen auch nicht teuer
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  25. #25
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    Zitat Zitat von KATgirl Beitrag anzeigen
    https://www.startssl.com/
    https://www.cacert.org/

    bzw. gleich auf einem Asteroiden hosten, da ist immer ein Zertifikat bei der Default-Domain bei
    https://uberspace.de/dokuwiki/webserver:https#https

    30 Euro bei hosteurope finde ich im übrigen auch nicht teuer
    günstig nicht billig:

    wenn ich auf startssl und cacert gehe kommt direkt das dem Zertifikat nicht vertraut wird, das ist ja eher negativ als positiv für den Besucher, bzw. da könnte ich auch ein eigenes Zertifikat nehmen.

  26. #26
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Bei StartSSL hatte ich das Problem selbst noch nie gehabt.
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  27. #27
    Contao-Fan
    Registriert seit
    22.12.2012.
    Beiträge
    325

    Standard

    naja das von hosteurope sieht ganz gut aus. Gibt es auch irgendwo Zertifikate für eine IP und nicht nur für eine Domain, so würde ich mehrere brauchen.

  28. #28
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Schau dir mal https://ssl-trust.com/SSL-Zertifikate/Multi-Domain.html an.

    Gesendet von meinem Nexus 4 mit Tapatalk 4 Beta
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

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