Wie Verbindung zu einer Datenbank herzustellen, die erfordert, dass das Passwort, ohne dass das Passwort?
Bin ich erstellen Sie eine Anwendung und ich muss eine Verbindung zu einer Datenbank. Die Datenbank erfordert login/Passwort, so kann die Anwendung von Operationen wie auswählen und einfügen.
In der Anwendung, ich muss eine Verbindung zu der Datenbank mit login und Passwort, so dass das Programm frei ist zu tun, einige Aufgaben auf der Datenbank. Meine Frage ist: wie kann ich speichern und verwenden ein Passwort eine Verbindung zur Datenbank herstellen, ohne dass das Passwort?
Kann ich nicht einfach mit einem hash oder Verschlüsselung zu speichern das Kennwort, da die Datenbank muss erkennen, das Kennwort (ich denke, die meisten oder alle Datenbanken muss das Kennwort als nur-text).
.
.
Hinweis: Die Verbindung wird von der Anwendung vorgenommen. Keine menschlichen input zu tun, die Verbindung.
(Bearbeiten)Mehr info über das Programm: es ist eine web-Anwendung mit servlets/jsp. Die Datenbank auf dem gleichen server der Anwendung. Die Benutzer für die Anwendung ist ein Standard-Benutzer ohne komplette admin-Befugnisse, aber es kann einfügen/löschen von Zeilen und tun die meisten Dinge, die bezieht sich auf Abfragen und Datenänderungen in Tabellen.
Die Verbindung wird von der Anwendung vorgenommen. Keine menschlichen input.
Ich glaube, Sie brauchen, um zu beschreiben, ein bisschen mehr über Ihre Anwendung auf die Umwelt. Ist das eine server-app, client-app, ist die Datenbank auf dem gleichen server, verschiedene server? Haben Sie erstellt einen Benutzer mit Berechtigungen nur zum einfügen? (Sie versuchen nicht, sich als root sind Sie?) Generell müssen Sie "geben einige Informationen Weg' und einschränken login Zugriff auf einen ip-Bereich.
InformationsquelleAutor ceklock | 2012-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den üblichen Weg dies geschieht, ist zu externalisieren, den Benutzernamen/Passwort zu einem Eigenschaft/config-Datei gelesen (Laufzeit, ob oder nicht Sie verwenden nativen JDBC/JNDI/CDI/J2EE-datasource/etc).
Dass die Datei geschützt ist, über die O/S-Sicherheit durch die Systemadministratoren.
O/S hat bessere tools für Schutz als app-code.
nicht sicher, wie Sie Sie sicher in client-apps (wo Passwort steht auf der Leitung)? Pflege zu elborate....
Wenn Sie verhindern möchten, dass jemand über die Schulter schaut und zu sehen, Passwort beim Bearbeiten der Konfigurationsdatei, können Sie die
stringScrambler
in der Java-Helper-Bibliothek. Es ist wirklich einfach, aber wirklich effektiv, um zu verhindern, dass Menschen von der Schulter surfen Ihr Passwort...Die Datei ist reiner text. Ich habe gesehen, dies getan viele Male auf großen kommerziellen websites und Servern. Die Datei ist sicher, da die Systemadministratoren lassen Sie sich nicht jemand in der Nähe der Datei-system, so ist es sicher (und viel einfacher) werden in Klartext angezeigt. Sie verschlüsseln können, wenn Sie wollen, aber alles kann geknackt werden mit genügend Zeit und CPU, es ist also nicht "sicher" wenn die Menschen Zugriff auf die Datei. Sie müssen verhindern, dass der Zugriff auf die Datei, außer mit sysadmin-und der Laufenden java-Prozess.
Wie würden Sie erlauben den parallelen Zugriff für mehrere Benutzer auf diese properties-Datei?
InformationsquelleAutor Bohemian
Sollten Sie eine config-Datei für diese. nutzen spring mit JDBC, um Ihr Leben leichter machen!
http://www.youtube.com/watch?v=f-k823MZ02Q
Kasse die oben awesome tutorial auf dem Spring framework und unter Verwendung von JDBC. Beobachten alle seine JDBC und spring-tutorials.
BTW, er beschreibt, wie die Speicherung der Passwörter in der config-Dateien und Draht Bohnen etc.. Hoffe, das hilft.
InformationsquelleAutor Horse Voice
Können Sie jasypt für die Verschlüsselung.Und speichern Sie den Benutzernamen und das Kennwort Datenquelle.Eigenschaften-Datei.
Jasypt bietet unidirektionale und bidirektionale Verschlüsselung-Techniken. Ich habe gerade verwendet die Bibliothek für die Verbindungszeichenfolge. jasypt.org/features.html
InformationsquelleAutor JR Galia
Wenn es eine web-app, installieren Sie es auf einem Java EE-Applikationsserver und eine Verbindung über einen JNDI-Ressource. Nur der admin, die richten das JNDI-Daten-Ressource muss über die erforderlichen Anmeldeinformationen, um eine Verbindung herstellen. Anwender und Entwickler haben noch nicht einmal zu erkennen; nur die JNDI-lookup-name.
Es ist nicht möglich, vollständig zu eliminieren die Notwendigkeit für jemanden, der neben der Datenbank-Besitzer wissen, den Benutzernamen und das Passwort, aber es ist möglich, um zu verhindern, dass wissen an den app-server Besitzer.
Sind Sie auch gut beraten, erstellen Sie separate Anmeldeinformationen, die nur für diese Anwendung und GEWÄHREN Sie den minimalen Zugriff und Berechtigungen benötigt, um seine Aufgaben. Es sollte kein wissen von system-Tabellen oder andere Ressourcen außerhalb der Provinz von der Anwendung. WENN die LÖSCHEN-Berechtigung nicht erforderlich ist, nicht gewähren. Wenn der Zugriff sollte nur gelesen werden, nur ist das, was Sie soll GEWÄHREN, dass die Anmeldeinformationen.
InformationsquelleAutor duffymo