2016-07-19 25 views
0

Ich programmiere eine Android-App in Java, und ein Teil der App sendet eine E-Mail von meinem E-Mail-Konto an ein anderes E-Mail-Konto. Ich benutze JavaMail, um dies zu erreichen.Wie kann ich verhindern, dass Benutzer eine Variable in Java lesen?

Es funktioniert alles sehr gut, außer dass mein Passwort für das E-Mail-Konto, aus dem ich sende, in eine Variable in meinem Programm fest codiert ist. Ich möchte keinen Benutzer, um auf diese Variable zugreifen zu können. Muss ich es verschlüsseln? Wie würde ich das machen? Gibt es eine Möglichkeit JavaMail zu konfigurieren, damit ich mein Passwort nicht irgendwo auf dem Gerät speichern muss?

Hier ist der Code, den ich verwende, um die E-Mail und das Passwort zu speichern. Es sind nur statische Variablen in ihrer eigenen Klasse:

public class Config { 
     public static final String EMAIL ="[email]@gmail.com"; 
     public static final String PASSWORD ="[password]"; 
} 

Ich habe versucht, Zwei-Faktor-Authentifizierung auf dem Konto aktivieren, aber JavaMail schlägt in diesem Fall fehl.

Ich möchte nicht auf die Besonderheiten der App eingehen, aber niemand außerhalb meiner Heimatstadt hätte einen Grund, diese App jemals herunterzuladen. Es ist für einen ganz lokalen Zweck. Es ist ein Passwort, das ich nirgendwo anders benutzt habe, und es ist ein E-Mail-Konto, das ich speziell für diese Anwendung erstellt habe, also gehe ich hier kein großes Risiko ein. Ich möchte immer noch so sicher wie möglich sein.

+0

Muss es eine E-Mail sein? Sie könnten beispielsweise in eine Google-Tabelle schreiben. Oder wenn Sie die Ressourcen haben einen dedizierten Webserver. – BCartolo

+0

Es muss von einer bestimmten E-Mail-Adresse empfangen werden. Die Methode der Ausführung spielt keine Rolle, obwohl ein Webserver in dieser Situation möglicherweise nicht möglich ist. Ist es möglich, ein Google-Formular im Kontext meiner Aktivität zu verwenden? Ich habe es recherchiert, aber ich habe noch keinen Weg gefunden. – austin

+0

Sie können eine Umfrage in Google Spreadsheet erstellen und dort alle Daten veröffentlichen. Dann können Sie die Antworten sehen, vielleicht können Sie sogar per E-Mail benachrichtigt werden, wenn jemand etwas postet. – BCartolo

Antwort

5

Wenn Sie Ihr Passwort fest in das Programm einprogrammieren, gibt es keine Möglichkeit, jemanden daran zu hindern, es herauszubekommen, wenn sie es wollen.

Anstatt die E-Mail von der App zu senden, können Sie einen Webserver einrichten, mit dem die App eine Verbindung herstellen kann. Wenn das Senden der E-Mail ein Muss ist, können Sie die E-Mail von diesem Webserver senden. Auf diese Weise befinden sich die Anmeldeinformationen auf Ihrem privaten Server und nicht auf der App, die Sie an alle senden.

+0

Dies ist wahrscheinlich die beste Option. Verwenden Sie einfach ein einfaches gehostetes PHP-Skript, das Sie mit allen eingebauten Anmeldeinformationen treffen können. Voila, geschützt. – RayfenWindspear

-1

Verwenden Sie private Variablen anstelle von öffentlichen Variablen. Bitte beziehe dich auf diese Java Access Modifiers

+1

Zugriffsmodifizierer bieten keine Sicherheit. Sie sind nur ein Werkzeug für den Entwickler. Gehen Sie nicht davon aus, dass Daten sicher sind, nur weil sie sich in einer privaten Variablen befinden. – puhlen