[C++] Auf SQL Datenbank zugreifen

08/03/2011 13:33 .Infinite#1
Wie aus der Überschrift ersichtlich sein sollte suche ich nach einer Möglichkeit, einfach und schnell auf eine SQL-Datenbank zuzugreifen...
Ich hab schon diverse libraries ausprobiert. Nur waren das leider immer entweder Demoversionen oder die brauchten noch weitere libraries, die wieder Abhängigkeiten mit sich brachten.

Außerdem wollte ich wissen, ob es möglich ist, auf die Datenbank zuzugreifen, ohne die Zugangsdaten im Quellcode zu haben (ich kann kein PHP). Die einzige Alternative die ich mir denken könnte wäre ein Benutzer für die Datenbank mit eingeschränkten Rechten. Das würde aber trotzdem immer noch fremden Leuten evtl. einen Lesezugriff auf meine Datenbank geben.

tl;dr:
1. Wie in c++ mit SQL-Datenbank verbinden?
2. Möglichkeit die Zugangsdaten nicht im Quellcode zu haben
08/03/2011 13:49 Bot_interesierter#2
In der Regel gibt es eine C API für SQL Datenbanken.
Was deine Frage mit den Zugangsdaten im Quellcode betrifft solltest du dich vielleicht mal mit dem Client/Server Konzept auseinander setzten, es wäre einfach nur fahrlässig dem Client die Zugangsdaten zu deiner Datenbank zu geben...
08/03/2011 13:54 .Infinite#3
Quote:
In der Regel gibt es eine C API für SQL Datenbanken.
Wie kann ich die in C++ verwenden?

Quote:
Was deine Frage mit den Zugangsdaten im Quellcode betrifft solltest du dich vielleicht mal mit dem Client/Server Konzept auseinander setzten, es wäre einfach nur fahrlässig dem Client die Zugangsdaten zu deiner Datenbank zu geben...
Leider habe ich keinen Server zur Verfügung, auf dem ich etwas in der Art laufen lassen könnte. Die Datenbank hab ich von freesql.org....
08/03/2011 13:55 MoepMeep#4
1. Wenn mich nicht alles täuscht, sollte boost dir helfen können :p Wenn es nicht unbedingt C++ sein muss, würde ich dir bei sowas zu C# raten, macht das ganze deutlich angenehmer.

2. Verschlüsseln, Packen(z.b. mit Themida). Steht dann natürlich immernoch im Quelltext.
Da du dich von PHP lossagen willst, bleibt dir wohl nur ein Server. Also:
Client -> server -> datenbank -> server -> client.


edit: Früh morgens, viel zu lange zum tippen gebraucht ._.
08/03/2011 14:00 Bot_interesierter#5
@.Infinite
Ja wie denn schon, die Header einbinden und gegen die Bibliothek linken...
Da du uns nicht verrätst welche SQL Datenbank du verwendest musst du schon selbst schauen wo du die Header und die Bibliothek her bekommst...

@MoepMoep
Security through obscourity ist immer der falsche Ansatz, warum schlägst du das überhaupt vor?
Dein kleines "Flussdiagramm" ist da schon wesentlich besser.
08/03/2011 14:03 .Infinite#6
Quote:
Wenn mich nicht alles täuscht, sollte boost dir helfen können Wenn es nicht unbedingt C++ sein muss, würde ich dir bei sowas zu C# raten, macht das ganze deutlich angenehmer
Werde mir boost mal angucken. Ich hatte das schonmal gedownloadet, weil es für irgendeine andere library notwendig war. C# mag ich garnicht.
Habe grade was von einer Klasse CDatabse in der mfc gelesen... Vielleicht ist das ja was.

Quote:
Verschlüsseln, Packen(z.b. mit Themida). Steht dann natürlich immernoch im Quelltext.
Da du dich von PHP lossagen willst, bleibt dir wohl nur ein Server. Also:
Client -> server -> datenbank -> server -> client.
Bleibt mir wohl keine andere Möglichkeit als das ganze irgendwie zu obfuscaten. Ein Server ist mir zu teuer...
08/03/2011 14:18 Bot_interesierter#7
Und worauf läuft dann bitte deine Datenbank, wenn nicht auf einem Server?
08/03/2011 14:24 .Infinite#8
Quote:
Die Datenbank hab ich von freesql.org....
Die Datenbank läuft doch auf einem Server... Aber ein Server auf den ich keinen Zugriff habe bzw. keine Anwendungen laufen lassen kann.
08/03/2011 14:49 MoepMeep#9
Quote:
Originally Posted by Bot_interesierter View Post
@MoepMoep
Security through obscourity ist immer der falsche Ansatz, warum schlägst du das überhaupt vor?
Dein kleines "Flussdiagramm" ist da schon wesentlich besser.
Man sollte trotzdem immer alle möglichkeiten aufzählen, steht ja daneben, dass es nicht das sinnvollste wär :p
08/03/2011 19:51 MrSm!th#10
Wie willst du, ohne die Daten im Source Code zu haben, auf die DB zugreifen?
Irgendwie musst du dich doch authentifizieren o.ô

Und eine DB, bei der du dich nicht authentifizieren musst, ermöglicht dann doch wieder für jeden Lese/Schreibzugriff, du musst dich schon entscheiden o.ô
Wir stellst du dir das ganze denn vor? Wenn dein Programm Lesezugriff hat, haben den auch alle anderen.
Selbst wenn du eine PHP Datei hättest, die das Verbinden mit der DB übernehmen würde, würde diese PHP Datei ja wiederum nicht nur deinem Programm die Daten übergeben.

So oder so, Lesezugriff kann sich jeder verschaffen.
08/03/2011 20:57 .Infinite#11
Das heist die einzige verhältnismäßig sichere Möglichkeit wäre eine verschlüsselte Verbindung mit einem Server auf dem die DB liegt...
Quote:
client -> server -> datenbank -> server -> client.
Naja schade... Hat mir trotzdem sehr geholfen. Danke ;)
08/04/2011 02:46 cooler7878#12
Vllt hilft dir das : [Only registered and activated users can see links. Click Here To Register...]
08/04/2011 10:36 .Infinite#13
Das war bis dato auch die hilfreichste Seite gewesen, die ich gefunden hatte... Allerdings habe ich keine Ahnung wo ich die Headerfiles und Library die da genutzt werden her bekomme.
08/04/2011 16:12 MrSm!th#14
Auch eine verschlüsselte Verbindung wäre nicht sicher, die könnte auch jeder andere aufbauen.

Lesezugriff hat jeder, das ist immer so.
Wenn du den verbieten willst, hast du ihn auch nicht mehr. Der Server kann dich ja nicht von anderen unterscheiden, höchstens durch ein Passowrt und evtl. ein Passwort. Und diese Daten müssen dann natürlich auch in deinem Programm vorhanden sein.

Theoretisch hat auch jeder Lesezugriff auf die Stats usw. bei einem Spiel, man muss nur ggf. das Protokoll und die Verschlüsselung reversen und nachbauen.