Mysq Verbindungl: via PHP vs. C-Library

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

  • Mysq Verbindungl: via PHP vs. C-Library

    Hallo,

    ich möchte in meiner App eine Verbindung zu einer MySQL Datenbank aufbauen (Daten senden, empfangen, synchronisieren, etc.).
    Soviel ich weiß gibt es grundsätzlich zwei Alternativen, wie man dies durchführen kann:
    1.) Mit Hilfe von PHP. Z.B. beschrieben hier: raywenderlich.com/2941/how-to-…eb-service-for-an-ios-app
    2.) Mit Hilfe eines C-Librarys: karlkraft.com/index.php/2010/06/02/mysql-and-objective-c/

    Mir ist allerdings nicht klar, welche Methode die bessere ist bzw. auch die mit mehr Sicherheit. Was spricht für die erste und was für die zweite?

    Vielen Dank.
  • Für PHP spricht, dass man es universal einsetzen kann.
    Heißt du schreibst dein App und dazu ein PHP Webservice und dir fällt ein dass du gern noch ein Android App haben willst.
    So musst du nicht alles doppelt schreiben. Benutzt du eine Libary für direkten Zugriff auf die DB, musst du alles nochmal schreiben.

    Ich glaube auch ein Webservice ist auch die sichere Methode.. Das weiß ich aber nicht genau.
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Wenn du der App direkten zugriff auf deine DB gibst, dann must du auch die Zugangsdaten sammt Passwörtern etc auf dem iPhone haben. Damit stehen jedem guten Hacker alle Wege offen diese herauszufinden und dann mit Deiner DB zu machen was sie wollen.

    Sowas MUSS man immer mit einem Webservice kapseln und auch hier gehört eine Menge Knowhow dazu, diesen so zu gestallten, das er relativ Hacksicher ist (Absolut gibt es eh nicht).

    mysql sollte sowiso niemand mehr benutzen, das ist deprecated. Wenigstens mysqli oder eben PDO.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Vielen Dank für die Antworten. Das erleichtert natürlich die Wahl :-).
    mysql sollte sowiso niemand mehr benutzen, das ist deprecated. Wenigstens mysqli oder eben PDO.
    Mit "mysq" meinst du wahrscheinlich "mysql_connect()"?
    Ne, es gibt MySQL und MySQLi, wobei ich von deprecated noch nichts gelesen habe :) brauch es aber auch nicht oft
  • matz schrieb:

    Vielen Dank für die Antworten. Das erleichtert natürlich die Wahl :-).
    mysql sollte sowiso niemand mehr benutzen, das ist deprecated. Wenigstens mysqli oder eben PDO.

    Mit "mysq" meinst du wahrscheinlich "mysql_connect()"?

    Ne, es gibt MySQL und MySQLi, wobei ich von deprecated noch nichts gelesen habe :) brauch es aber auch nicht oft


    also das steht ziemlich deutlich in der doku ;)

    php.net/manual/en/function.mysql-connect.php
  • coolex schrieb:

    Soviel ich weiß gibt es grundsätzlich zwei Alternativen, wie man dies durchführen kann:
    1.) Mit Hilfe von PHP. Z.B. beschrieben hier: raywenderlich.com/2941/how-to-…eb-service-for-an-ios-app
    2.) Mit Hilfe eines C-Librarys: karlkraft.com/index.php/2010/06/02/mysql-and-objective-c/
    Du solltest Dich vielleicht nicht wörtlich an PHP klammern, sondern erstmal nur an irgendeine serverseitige Technologie denken. Ob das dann PHP ist oder Python oder Ruby oder Node.js oder was anderes, macht für die prinzipielle Herangehensweise keinen Unterschied. Vielleicht findest Du ja auch irgendein Framework bzw. Modul (Node), das auf RESTful Services spezialisiert ist und Dir out of the box schon einen Großteil dessen bietet, was Du als Basisfunktionalität brauchst.

    Carsten
  • Thallius schrieb:

    Wenn du der App direkten zugriff auf deine DB gibst, dann must du auch die Zugangsdaten sammt Passwörtern etc auf dem iPhone haben. Damit stehen jedem guten Hacker alle Wege offen diese herauszufinden und dann mit Deiner DB zu machen was sie wollen.
    Prinzipiell gebe ich Dir recht, aber man sollte das vielleicht nicht so absolut sagen, denn es kommt auch ein bisschen darauf an, was man mit den MySQL-Rechten anstellt. Viele Leute sind sich ja nicht dessen bewusst, dass MySQL relativ flexibel ist, was die Steuerung der Zugriffe betrifft und man z.B. sagen kann, Benutzer A darf auf Spalte X in Tabelle Y schreibend zugreifen, auf Tabelle Z komplett lesend und auf alles andere gar nicht. Und man kann ebenso festlegen, dass nur der User, den man für den Remote-Zugriff nutzt, von irgendwas anderem als localhost zugreifen darf.

    Persönlich würde ich aber ebenfalls eine Wrapper-Schicht außenrum legen, wobei ich auch ein paar Gründe jenseits von Sicherheit sehe:
    * Unabhängigkeit von der DB. Wenn ich mir morgen überlege, dass ich mit Redis oder PostgreSQL besser fahre, habe ich keinen Client-seitigen Klotz am Bein.
    * Unabhängigkeit von der Server-seitigen Implementierung. Wenn ich einen RESTful Service mit sinnvollen (oder zumindest Dateisystem-abstrahierten) URLs habe (statt Kack wie /filename?foo=bar&cat=123), kann ich eine Implementierung auf Basis von PHP und Silex ohne weiteres gegen eine in Ruby und Capistrano austauschen.
    * Möglichkeiten, irgendwelche Dinge zu triggern (an die ich vielleicht jetzt noch nicht denke), die mit DB-Triggern alleine nicht machbar wären.
    * Mehr Möglichkeiten beim Logging (nicht zuletzt auch in punkto Brute Force)
    * usw.

    Carsten
  • BlueM schrieb:

    Thallius schrieb:

    Wenn du der App direkten zugriff auf deine DB gibst, dann must du auch die Zugangsdaten sammt Passwörtern etc auf dem iPhone haben. Damit stehen jedem guten Hacker alle Wege offen diese herauszufinden und dann mit Deiner DB zu machen was sie wollen.
    Prinzipiell gebe ich Dir recht, aber man sollte das vielleicht nicht so absolut sagen, denn es kommt auch ein bisschen darauf an, was man mit den MySQL-Rechten anstellt. Viele Leute sind sich ja nicht dessen bewusst, dass MySQL relativ flexibel ist, was die Steuerung der Zugriffe betrifft und man z.B. sagen kann, Benutzer A darf auf Spalte X in Tabelle Y schreibend zugreifen, auf Tabelle Z komplett lesend und auf alles andere gar nicht. Und man kann ebenso festlegen, dass nur der User, den man für den Remote-Zugriff nutzt, von irgendwas anderem als localhost zugreifen darf.

    Carsten


    Stimmt, solange man wirklich NUR lesend zugreifen will geht das noch aber das dürfte auch nur selten der Fall sein.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • gritsch schrieb:

    matz schrieb:

    Vielen Dank für die Antworten. Das erleichtert natürlich die Wahl :-).
    mysql sollte sowiso niemand mehr benutzen, das ist deprecated. Wenigstens mysqli oder eben PDO.

    Mit "mysq" meinst du wahrscheinlich "mysql_connect()"?

    Ne, es gibt MySQL und MySQLi, wobei ich von deprecated noch nichts gelesen habe :) brauch es aber auch nicht oft


    also das steht ziemlich deutlich in der doku ;)

    php.net/manual/en/function.mysql-connect.php


    Tatsächlich!

    Interessant, das in aktuellen! Büchern noch das normale mysql_connect() verwendet wird.