PHP-Scripte (nicht nur) für den Pre, AvantGo war gestern

Willkommen!

Wenn du im Nexave-Forum mitmachen möchtest, schreib an community@nexave.de. Wir haben die Registrierungsfunktion in unserem Diskussionsforum nämlich deaktiviert, weil sich praktisch nur noch Spammer und Werbebots registriert haben. Per E-Mail sind wir dir gern behilflich, einen Account anzulegen.
  • Ihr Lieben,


    auch wenn die Pre-Fans nun vermutlich alle ein Datenpaket unlimited haben, gibt es sicher noch welche, die auf effizientes Lesen von News unterwegs wert legen. RSS ist zwar ne Lösung, aber es geht auch schöner :)
    Meine bisherigen Heise- und SPON-Scripte funktionieren auf dem Pre nur bedingt, deshalb habe ich sie angepaßt, so daß man die News schön übersichtlich lesen kann, ohne vergößern zu müssen. Leider gibt es einen Bug im Pre-Browser, der eine Folgeseite an der Scrollposition öffnet, wo man die erste verlassen hat, was bedeutet, daß man die zweite Seite erst wieder hochscrollen muß. Aufgrund dessen habe ich das als Workaround so programmiert, daß ein Beitrag in einer neuen Card öffnet. Hoffe aber sehr, daß Palm das mit dem Update auf 1.3 behebt.


    Zudem war ich es leid, ständig meine Passwort-Verwaltung zu synchronisieren. Zwar besaß ich auf dem Centro Cryptinfo (SplashID mag ich nicht...), aber für den Pre gibts noch keine adäquate Lösung.
    Habe mir also gedacht: Warum nicht online verwalten? Dann habe ich mit dem Pre bequemen Zugriff darauf und zuhause sowieso - und die Daten liegen auf meinem Server! Also habe ich mal eben eine Passwort-Verwaltung in PHP programmiert, die Passwörter ohne SQL-Datenbank speichern kann, vielleicht nutzt es manchen von euch.


    Heise Newsscript v2.0



    SPON Newsscript v2.0



    Installationsanweisung für Heise und SPON:
    Die beiden Dateien in einen Ordner auf deinen Webserver hochladen. Der Aufruf der Scripte erfolgt über www.DEINE-ADRESSE.de/ORDNER/index.php
    Im Dateikopf der "index.php" können ein paar Einstellungen mit einem Texteditor vorgenommen werden.


    Password-Manager 2.0beta2 vom 31.10.09



    Changelog:
    * Rijndael-Verschlüsselung, Mode CBC
    * Bugs entfernt
    * CSS angepaßt
    * Sonderzeichen in Tags möglich außer Backslash ( \ ) und Apostroph ( ' )


    Hinweise zum PWM:
    * Die 3 Dateien in einen Order deiner Wahl auf deinen Webserver hochladen
    * Beim ersten Start muß ein Masterpasswort eingegeben werden, damit wird die Datenbank verschlüsselt
    * Kategorien sind Tags, sie werden automatisch angelegt oder gelöscht, wenn man einen Tag eingibt, bzw. löscht
    * Wenn die kleinen Pfeile unten rechts angezeigt werden, existieren mehr als 2 Felder oder eine Notiz
    * Zur Detailansicht auf die Pfeile oder die Titelleiste des Eintrags klicken
    * Aufgrund eines Bugs im Pre-Browser wird eine Session nicht ordentlich geschlossen. Als Workaround wird nach 2 Minuten Inaktivität das Passwort erneut verlangt.


    Online zum Testen: , Passwort zum Einloggen: nexave


    Wenn Ihr einen Bug findet oder Vorschläge habt, bitte her damit! :D


    Screenshot:



    Edit by cecil ingramm connor:


    auf Veranlassung von shaft die Dateianhänge entfernt, da nicht mehr aktuell

  • Ähm, da ja die Resonanz äußerst heftig ausgefallen ist und mich fast erschlagen hat, habe ich eben mal die Version 1.0 vom Password Manager online gestellt (siehe ersten Beitrag).
    Bitte haltet euch in Zukunft mit den Kommentaren etwas zurück, damit ich mein Ein-Mann-Stück weiter proben kann :D


    Viel Spaß!
    (Jedenfalls für die, die das Script gebrauchen können... Wer ein Import-Script braucht, kann sich gerne bei mir melden.)

  • Hinweise zum PWM:
    * In der index.php wird das Passwort eingestellt. Voreinstellung ist "admin"

    gefährlich...


    bei einer falschen Einstellung im Webserver/PHP-Parser besteht die Möglichkeit, diese index.php im Klartext vom Webserver zu bekommen - und somit auch das Passwort zum Manager...


    Ok - es muss bekannt sein, das auf dieser Webpräsenz dieser Passwortmanager vorhanden ist, und auch das Verzeichniss... aber gefählrich ist es dennoch...



    Gruß Blackmore


    Lösungsansatz:


    Beim ersten Login abfragen, ob eine bestimmte Datei vorhanden ist, wenn nicht, ein Passwort abfragen, und dieses MD5-verschlüsseln
    Bei weiteren Logins das eingegebene Passwort verschlüsseln, und mit dem gespeicherten Passwort vergleichen - braucht zwar ein wenig mehr Rechenlast, aber ist dafür umso sicherer...
    Vielleicht zeitgleich eine Mindestlänge des Passwortes verlangen


    Hab ich grad richtig gelesen??? die "Datenbank" ist zwar verschlüsselt, jedoch mit einem recht einfachen System???
    Ich bin mir nicht sicher, ob man den MD5-Hash wieder in Klartext umrechnen kann, wenn das aber der Fall ist, sollte man die gespeicherten Daten auch mit MD5 verschlüsseln...


    Sind nur Anregungen - ich nutze privat Splash-ID - aber die Idee des Scripts find ich sehr gut...


    vllt könnte man sowas proffessionell machen - MySQL-DB mit Multi-User, etc etc etc... (nen Webserver hätt ich, könnt den sogar zur Verfügung stellen)

  • bei einer falschen Einstellung im Webserver/PHP-Parser besteht die Möglichkeit, diese index.php im Klartext vom Webserver zu bekommen


    danke für den hinweis!
    ist das besser, die settings via include() einzubinden?
    [edit]
    hab grad deinen lösungsansatz gelesen, das ist genial! werde ich einbauen :)


  • danke für den hinweis!
    ist das besser, die settings via include() einzubinden?
    [edit]
    hab grad deinen lösungsansatz gelesen, das ist genial! werde ich einbauen :)

    include würd gehen - aber ich glaube require() wäre in diesem Falle besser...


    include heißt ja, das er diese Datei dort einsetzen soll, wenn nicht vorhanden, egal...
    require heißt, ohne diese Datei geht grad mal gar nichts...


    Und:
    wenn ich schon die index.php runterladen konnte, wird einem Runterladen der im include/require-Pfad angegebenen Datei auch kaum ein Problem darstellen... Es sei denn, diese Datei ist in einem gesicherten Verzeichniss untergebracht...


    MD5-verschlüsselte Datei: wenn diese Datei gelöscht wird, muss man logischerweise wieder ein neues Passwort eingeben - auch für Hacker interessant - wenn die es schaffen, die Datei zu löschen, sind sie wieder drin...

  • MD5-verschlüsselte Datei: wenn diese Datei gelöscht wird, muss man logischerweise wieder ein neues Passwort eingeben - auch für Hacker interessant - wenn die es schaffen, die Datei zu löschen, sind sie wieder drin...


    deswegen erweitere ich ja gerade die verschlüsselung in der hinsicht, daß das passwort unbedingt vonnöten ist, um die passwort-datei zu ENTschlüsseln. wenn also jemand dein szenario schafft, dann hat er zwar vielleicht zugriff auf die passwort-datei, aber die ist mit dem master-passwort verschlüsselt ;)


    Zitat

    Hab ich grad richtig gelesen??? die "Datenbank" ist zwar verschlüsselt, jedoch mit einem recht einfachen System???
    Ich bin mir nicht sicher, ob man den MD5-Hash wieder in Klartext umrechnen kann, wenn das aber der Fall ist, sollte man die gespeicherten Daten auch mit MD5 verschlüsseln...


    den MD5 kannst du nicht mehr in klartext auslesen, von daher: einbahnstraße.
    es gibt die mcrypt-funktion in PHP, aber da steig ich nicht durch um ehrlich zu sein.
    ein "verschlüsselungsverfahren" ist nur so einfach, wie man es kennt... :)

  • deswegen erweitere ich ja gerade die verschlüsselung in der hinsicht, daß das passwort unbedingt vonnöten ist, um die passwort-datei zu ENTschlüsseln. wenn also jemand dein szenario schafft, dann hat er zwar vielleicht zugriff auf die passwort-datei, aber die ist mit dem master-passwort verschlüsselt ;)

    ich sag jetzt einfach mal JA...


    vielleicht hab ich es jetzt richtig verstanden...


    Zitat


    den MD5 kannst du nicht mehr in klartext auslesen, von daher: einbahnstraße.
    es gibt die mcrypt-funktion in PHP, aber da steig ich nicht durch um ehrlich zu sein.
    ein "verschlüsselungsverfahren" ist nur so einfach, wie man es kennt... :)


    wär auch zu schön gewesen...
    aber da du das Script öffentlich zur Verfügung stellst, ist die Verschlüsselung eigentlich bekannt...


    ::EDIT::
    ich werde jetzt, aufgrund des miserablen TV-Programms, in mich gehen und bei Dunkelheit auf einer weichen Matratze über das Thema nachdenken...
    morgen gibt es weitere, vllt. unsinnige, Vorschläge, falls mir was einfällt...

  • Ich habe mal die mcrypt-Funktionen ausprobiert und die encr und decr ersetzt. Zusätzlich müssen aber weiter unten im Code die urlencode und urldecode raus, die die Aufrufe von encr und decr einklammern.


    Code
    function encr($string, $key)
        {
            return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND))));
        }
    
    
    function decr($string, $key)
        {
            return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($string), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND)));
        }


    Mit dem Modus MCRYPT_RIJNDAEL_128 sollte die Datei dann auch mit anderen Programmiersprachen über AES zu entschlüsseln sein.


    Zur Sicherheit könnte man dann noch einen Logout-Vorgang einbauen, der die Session löscht/beendet.

  • Ich habe mal die mcrypt-Funktionen ausprobiert und die encr und decr ersetzt.


    Großes Kino, Toem, danke dir!
    Ich werde das einbauen und zusätzlich noch 2 Bugs entfernen, die mir aufgefallen sind. Vielleicht hätte ich die 1.0 nicht als 1.0 deklarieren sollen ;)
    (Aber Palm machts ja nicht anders...)

  • So, da eine komplett neue Verschlüsselung eingebaut ist, rechtfertigt das einen Versionssprung zu 2.0 :D
    Allerdings beta, da mit Sicherheit noch ein paar Bugs im Design auffallen werden.


    Toem: Ein Logout-Button ist für mein Dafürhalten nicht notwendig. Beim Schließen des Browsers wird die Session geschlossen, außerdem gibt es einen Timeout von 120 Sekunden.
    Übrigens habe ich die komplette Routine umgeschrieben. Es wird nicht mehr jedes einzelne Feld verschlüsselt, sondern die ganze Zeile, das spart massig Ressourcen.


    Robbycop: Einfach die beiden Dateien in ein Verzeichnis deiner Wahl auf einen Webserver hochladen und die "index.php" mit nem Browser aufrufen.

  • Ab jetzt wird die Verschlüsselung aber nicht mehr geändert, somit können also endlich Produktivdaten eingegeben werden.


    Damit wäre ich noch vorsichtig ;)


    Ich versuch mich da noch weiter einzulesen, gerade im Hinblick auf die evtl. Nutzung der Datei mit anderen Programmiersprachen. Dort wird vielfach nicht ECB, sondern CBC Modus verwendet. Vielleicht sollte man das noch anpassen.
    Außerdem würde ich im Hinblick auf das Trennzeichen vielleicht doch wieder das urlencode/urldecode der einzelnen Felder einfügen, damit man auch das Pipe-Zeichen in den Feldern nutzen kann.

  • Großes Kino - tolle Programme - bei mir kommt leider ein Fehler im PW Programm - kann das daran liegen das mein Stratoserver damit nicht umgehen kann ? Das Heise Script läuft perfekt.


    Warning: in_array() [function.in-array]: Wrong datatype for second argument in ........../pwmanager/index.php on line 255


    Grüße aus Berlin

  • Warning: in_array() [function.in-array]: Wrong datatype for second argument in ........../pwmanager/index.php on line 255


    Hast du eine Möglichkeit dir anzeigen zu lassen welche PHP-Version aktuell auf deinem Server läuft? Bei in_array gab es eine Änderung mit PHP 4.2, allerdings sollten auf den Servern eigentlich bereits 5er-Versionen laufen.


  • Hast du eine Möglichkeit dir anzeigen zu lassen welche PHP-Version aktuell auf deinem Server läuft? Bei in_array gab es eine Änderung mit PHP 4.2, allerdings sollten auf den Servern eigentlich bereits 5er-Versionen laufen.

    eine kleine Datei basteln, in der nchts weiter steht als wie:


    PHP
    <?php
    phpinfo();
    ?>


    da sieht man die ganzen Versionen und Umgebungsvariablen, wenn man die Datei im Browser aufruft...
    Gruß Blackmore

  • Seltsam, laut PHP-Dokumentation: http://de2.php.net/manual/de/function.in-array.php
    sollte das in_array ab Version 4.2.0 so funktionieren, wie es im Passwort-Manager eingesetzt wird.
    Versuch mal die index.php in index.php5 umzubenennen, laut Strato-FAQ sollte dann das Skript mit PHP5 laufen: http://www.strato-faq.de/artikel.html?id=1568