PHP und Cordova

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP und Cordova

    Hi,
    hoffe ich werde nicht direkt gegrillt und freue mich auf Hilfe.
    Habe eine APP mit HTML, CSS und PHP geschrieben.

    Jetzt möchte ich auf der index.html Daten über PHP aus einer Datenbank lesen.
    Kann mir dabei jemand kurz unter die Arme greifen und mir erläutern, inwiefern ich da JAVASCRIPT verwenden muss?

    Vielen Dank dafür :)

    Grüße Jens
  • Moin Jens und Herzlich Willkommen im Forum!

    Wie Du bereits richtig erkannt hast ist eine direkte Verarbeitung von PHP-Code innerhalb einer App nicht möglich. Deshalb geht man einen kleinen Umweg über Ajax und tauscht Daten mit dem Server aus. @Vincent Fuhler hat hierzu im How To X - Bereich ein Tutorial geschrieben -> Verbindung mit externer MySQL Datenbank

    Solltest Du anschließend oder währenddessen noch Fragen haben, kannst Du Dich natürlich gerne noch mal melden :)

    Viele Grüße,
    Tammo
  • Die PHP Datei wird auf den Server geladen (ich nutze hierfür einen extra Ordner "__app_services") und anschließend über Ajax aufgerufen: url: 'http://cordova-forum.de/__app_services/deinePHPDatei.php',. Danach erhältst Du die abgefragten Daten zurück in dem callback, welches Dir die Daten in die globale Variable "daten" speichert. Diese könntest Du Dir bspw. über einen console.log(daten); ausgeben lassen. Oder an welchem Punkt konkret benötigst Du Hilfe? :)
  • Die Ajax-Geschichte muss in die index.html, das dürfte zum Testen ideal sein. Ich hab das gepostete Script noch mal eben um einen Button im Body ergänzt der dann anklickbar ist und den Aufruf startet. Da sich der Ajax-Aufruf innerhalb einer Funktion befindet, muss diese auch irgendwo aufgerufen werden. Das machst Du jetzt über den Button. Kopier Dir mal das neue Script und versuch es damit :)
  • Servus ich hätte da auch mal ne frage

    ich erstelle mir eine
    1. form
    2. login
    3. username
    4. password
    dann erstelle ich mir eine
    1. function login
    2. via ajax übermittle ich es mit GET
    3. z.B data: { username: user, password: pass }
    nun komme ich zur php datei
    1. Die Daten kommen an die ich per GET los geschickt habe
    2. $user = $_GET['username'];
    3. $pass = $_GET['paswords'];
    4. Mysql connect
    5. mysql_query SELECT Tabelle daten holen
    wie sieht es dort mit der Sicherheit aus wenn wie im post geschrieben wurde jeder Hans den Quellcode einsehen kann und zwischen script mit einbauen kann und die Daten auslesen kann
  • Hi Fussel,


    wie sieht es dort mit der Sicherheit aus wenn wie im post geschrieben wurde jeder Hans den Quellcode einsehen kann und zwischen script mit einbauen kann und die Daten auslesen kann


    Wo? Auf dem Server?

    Mfg Christian

    P.S. du solltest PW + Benutzername nicht per GET übertragen
  • ich habe mir gerade mal paar tuts angeschaut mom ich zeig dir mal den code

    HTML-Quellcode

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>Coding an Instant Login Form with jQuery and Ajax</title>
    6. <link rel="stylesheet" type="text/css" href="style.css" />
    7. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    8. </head>
    9. <body>
    10. <div id="c">
    11. <h1>Instant Login with jQuery/Ajax</h1>
    12. <div id="loader"><img src="img/fbloader.gif" alt="loading…" /></div>
    13. <form action="" method="post" id="instantform">
    14. <label>Username:</label>
    15. <input type="text" id="username" name="username" />
    16. <label>Password:</label>
    17. <input type="password" id="pw" name="pw" />
    18. </form>
    19. <p id="logindetails"><em>username: admin / password: password1</em></p>
    20. <div id="results"></div>
    21. </div>
    22. <script type="text/javascript">
    23. $(document).ready(function() {
    24. $("#loader").hide();
    25. $("#pw, #username").keyup(function(){
    26. var passnum = $("#pw").val();
    27. var usernum = $("#username").val();
    28. if(passnum.length > 1 && usernum.length > 2) {
    29. var qry = 'username='+ $("#username").val() + '&pw=' + passnum;
    30. if($("#loader").attr("class") != "loading") {
    31. $("#loader").addClass("loading");
    32. $("#loader").show();
    33. }
    34. $.ajax({
    35. type: "POST",
    36. url: "login.php",
    37. data: qry,
    38. success: function(html) {
    39. if(html == 'good') {
    40. $("#loader").hide();
    41. $("#instantform").fadeOut(1100, 'swing')
    42. $("#instantform").next("p").fadeOut(1100, function(){
    43. $("#results").append('<h2>Success! Logged in as <strong>'+usernum+'</strong>!!');
    44. });
    45. $("#loader > img").attr("src", "img/checkmark.png");
    46. $("#loader").fadeIn(800);
    47. }
    48. else {
    49. // handling errors if needed
    50. }
    51. }
    52. });
    53. }
    54. });
    55. });
    56. </script>
    57. </body>
    58. </html>
    Alles anzeigen


    PHP-Quellcode

    1. <?php
    2. if($_POST) {
    3. $u = $_POST['username'];
    4. $p = $_POST['pw'];
    5. if($u == "admin" && $p == "password1") {
    6. echo "good";
    7. }
    8. else {
    9. // possible error handling in php
    10. // not required for all
    11. }
    12. }
    13. ?>
    Alles anzeigen
  • Also die einzigen Sicherheitsrelevanten Punkte die mir beiden Code auf die schnelle einfallen wären die Folgenden:

    1. Versand der Zugangsdaten über eine HTTPS-Verbindung
    2. Was passiert wenn das Admin Login erfolgreich war?

    Ich versteh nicht so ganz was du mit diesem Text "...und zwischen script mit einbauen kann und die Daten auslesen kann" aus deinem ersten Post gemeint hast.

    Mfg Christian
  • wenn ich eine anfrage starte dann brauch ich auch eine Antwort vom Server true oder false

    blos wenn das script so bearbeitet wird das ich nur noch true bekomme ist es doch ein Sicherheitsrisiko

    zu dem der knackpunkt ist das der angreifer die codezeilen sehen kann und verändern kann und so seine eigene zwischen abfragen mit rein hauen kann

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fussel ()

  • Ah ok jetzt versteh ich dich.

    Aber wie schon gesagt die eigentliche Frage ist was passiert nach dem Admin-Login?

    Werden zum Beispiel dem eingeloggten Benutzer hartcodierte Daten angezeigt, hast du ein "Sicherheitsrisiko". Aber um das auszunutzen muss mann nicht das Script manipulieren, da reicht es sich den restlichen Code der Anwendung anzusehen. Sollte dieser Fall bei dir eintreffen, hättest du das gleiche "Sicherheitsrisiko" auch wenn du ne nativ App schreiben würdest.

    Sollten aber zum Beispiel wieder Daten vom Server geladen werden, könnte man nochmal das PW und Benutzername an den Server schicken um so den User wieder neu zu identifizieren. Über diesen Weg wäre es dann auch egal, ob man dein Login-Script "umgangen" hat oder es "manipuliert" wurde.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Christian ()

  • gib es dann auch ne möglichkeit die passwörter abzufangen und offen zulegen

    meine webseit wird über ein model view controller gesteuert über Klassen Public und Privat zudem htaccess ich habe halt angst das der Kreis Angreifbar ist weil ich dafür schon seher lange Programmiert habe bis alles so läuft wie ich es haben wollte

    und möchte halt kein Code preisgeben
  • Soweit ich weiß generieren wir für eine App die wir für einen Kunden umgesetzt haben einen User-Hash. Einmal auf dem Server, einmal auf dem Gerät - praktisch wie eine TAN beim Online-Banking. Wenn die Antwort auf dem Server false ist, wird sie im Gerät auch immer false sein, andersrum natürlich genau das gleiche. @Vincent Fuhler kann Dir dazu sicher mehr erzählen.

    Welchen Code möchtest Du nicht preisgeben? Den einer nativen App musst Du nicht preisgeben. Bei einer Cordova-Applikation sieht das Ganze etwas anders aus. Jeder ist praktisch in der Lage dazu eine App zu dekompilieren und anschließend den Quellcode auszuwerten - deshalb sollten auch alle sicherheitsrelevanten Aspekte auf dem Server erfolgen und nicht auf dem Gerät.

    VG