2013-08-20 5 views
6

Ich entwickle eine iPad App, die auf einer sehr großen Datenbank mit wertvollen Informationen beruht. Ich bin mit dem Gerät selbst nicht so vertraut (ich habe weder ein persönliches iPad, noch habe ich jemals eines außerhalb der Entwicklung dieser App benutzt). Benutzer können die Daten in der Datenbank nicht direkt über meine App anzeigen.Wie viel Zugriff haben meine Benutzer auf eine SQLite-Datenbank, die ich mit meiner App ausliege?

Gibt es andere Möglichkeiten, wie Benutzer auf die Daten in meiner Datenbank zugreifen können (z. B. indem Sie das Gerät an den Computer anschließen und Xcode oder iTunes durchlaufen)? Wenn nicht, habe ich etwas über Jailbreaking gelesen, und ich habe gesehen, dass dies einem Benutzer den Zugriff auf das Dateisystem des Geräts ermöglichen kann, damit sie den Inhalt meiner Datenbank sehen können? Oder wäre es möglich durch Jailbreak und die Installation einer App, um Datenbankdateien auf Jailbroken-Geräten anzuzeigen (in der Tat this question würde vorschlagen, dass es sehr einfach sein könnte, eine "Datenbank-Reader" App für Jailbroken-Geräte zu entwickeln)?

+3

der durchschnittliche iDevice-Benutzer würde keine Datenbank kennen, wenn Sie ihm die Nase rümpften. Ein erfahrener Benutzer wäre in der Lage, einfach die db-Dateien abzurufen und alles/alles vom iDevice zu übernehmen, wenn sie dies wünschen. –

+2

Behalten Sie alle wichtigen Datenbankinformationen auf einem Datenbankserver - nicht auf dem iPad. Alles, was in einer lokalen Datei/Datenbank gespeichert ist, ist für den iPad-Benutzer zugänglich, obwohl Sie diese Informationen verschlüsseln können. –

Antwort

5

Wenn die Datenbank vorhanden ist, können Benutzer sie berühren. Es geht nur darum, ein wenig mehr als ein Power-User zu sein. Sie sind möglicherweise nicht in der Lage, die Daten aus der Datenbank zu lesen, wenn sie nicht über die Anmeldeinformationen verfügen, aber wenn Sie eine Datenbank auf Ihrer Festplatte haben, ist es nur eine Frage der Geduld und des Wissens, in sie einzudringen .

Dies ist ein Grundsatz, der für jedes Gerät und Betriebssystem gilt, nicht nur für iPad und iOS. Wenn Sie nicht möchten, dass Ihre Benutzer mit einer Datei, die Ihre App verwendet, in Konflikt geraten, können Sie sie mit einem obszön langen Verschlüsselungsschlüssel verschlüsseln. Irgendwann könnte jemand diese Information knacken ... Du kannst nur sicherstellen, dass es dir nicht möglich ist, bevor deine App veraltet ist.

Andernfalls behalten Sie Ihre Daten in einem Server, wo Menschen nicht berühren können.

+0

Ahh, davor hatte ich Angst.Wir haben die Daten auch auf einem Server, aber eine der Anforderungen der App ist, dass sie auch dann 100% funktionsfähig sein muss, wenn kein Internetzugang vorhanden ist - deshalb musste ich alles auf dem Gerät im Internet speichern erster Platz. Ich bin mit der Verschlüsselung nicht sehr vertraut, aber es sieht so aus, als müsste ich anfangen zu suchen. – GeneralMike

+0

Sind die Informationen, die Sie benötigen, zu 100% vertraulich oder nur einige Einstellungen, die der Benutzer nicht verändern soll? – Renan

+0

Mehr auf der 100% vertraulichen Seite. Mein Unternehmen sammelt seit rund 20 Jahren Daten, die für unsere Branche wichtig sind. Auf diese Daten muss ich zugreifen. Es besteht die Befürchtung, dass ein Kunde Zugang zu diesen Daten erhält, sie kopiert und keinen Bedarf mehr an unseren Dienstleistungen hat oder dass er sich umdreht und es als wichtigen Schritt zum Wettbewerb nutzt. – GeneralMike

1

Ich bin ein Entwickler (kein Hacker) Egal wie sehr ich versuche, meine Apps zu verteidigen, sobald der Code oder die Datenbank auf dem Gerät ist (verschlüsselt oder nicht) behandle ich die Daten als öffentlich. Wenn der Entschlüsselungsschlüssel an das Telefon übergeben und am Telefon entschlüsselt wird, sollten Sie diese Daten auch öffentlich berücksichtigen. im Grunde bist du geschraubt. Gib es auf, deine Apps zu verteidigen. und einfach anfangen, coolere Sachen zu bauen und HTTPS zu verwenden, wenn Daten über das Internet gesendet werden, das ist alles was ich verlangen kann. Die Verteidigung Ihrer Schlüssel, API-Token, Highscores, Münzen usw. ist im wahrsten Sinne des Wortes unmöglich. Ja, tue ein wenig, um es zu versuchen, aber deine Bemühungen sind fruchtlos. Jeden Tag werden die Tools des öffentlichen Hackers, um lokal verschlüsselte Datenbanken zu sehen, lokal verschlüsselte Apps, die in verschleierten Apps angezeigt werden, jeden Tag besser und besser. Du kannst es nicht schlagen. Entwickler sind nicht schlauer als Hacker, Punkt. Geben Sie dem Endbenutzer ein falsches Gefühl der Sicherheit. Es ist, als ob du dein Haus verschließt oder dein Auto verschließt, kannst du jemanden aufhalten, der einbricht? Nee. Der einzige Weg, um es zu lösen, ist eine große Ass-Bank (alias Server) zu bauen, einige Kassierer an der Rezeption (auch Cloud-API) zu setzen, und damit fertig zu sein.

0

Ich bin kein IOS-Entwickler, aber ich kenne SQLite. Sie können Datenbanken in SQLite verschlüsseln - suchen Sie nach der Dokumentation sqlite3_key_v2(). Ihre Anwendung muss das Passwort intern haben, aber Sie können es für einen Hacker schwierig machen, das zu tun. Verwenden Sie keine statische Zeichenfolge als Ihr Passwort - nehmen Sie stattdessen eine Zeichenfolge und manipulieren Sie sie programmgesteuert. Dies wird es einem Angreifer erschweren, wenn auch nicht unmöglich, den Schlüssel wiederherzustellen. Aber es wird eine Größenordnung mehr Komplexität hinzufügen. Der Angreifer muss Zugriff auf die Datenbankdatei selbst erhalten und muss dann Ihre App zurückentwickeln, um das Datenbankkennwort wiederherzustellen.

Verwandte Themen