2016-08-09 1 views
3

Problem

Ich bin eine Reihe von automatisierten Tests erstellen, die einen Benutzernamen und ein Passwort benötigen gegeben werden, um die Anwendung anzumelden, getestet werden. Ich habe eine Funktion LogOnToApplication(string username, string password), die die Anmeldeinformationen als Zeichenfolgen annimmt und sich bei der Anwendung anmeldet. Derzeit bin ich die zwei Zeichenketten als solche:sicher speichert Benutzerdaten (Benutzername/Passwort-Kombi) für den Einsatz in automatisierten Tests

string username = "username"; 
string password = "supersecretpassword"; 

Und mit

meiner Funktion übergeben gut für den Zweck meiner Tests
utilities.LogOnToApplication(username, password); 

Dies funktioniert, aber ich weiß, dass dies auf diese Weise tun ist riskant und unsicher. Diese Tests sind weit verbreitet, und das Setzen meiner Tests auf diese Weise könnte leicht zu einer Sicherheitsverletzung führen.

Frage

Was ist die beste Methode, um die username und password Strings aus meinem Code zu entfernen? Ich habe darüber nachgedacht, eine separate Datei zu erstellen, in der diese Informationen gespeichert werden, und aus der Datei zu ziehen, wenn die Informationen benötigt werden, aber das löst das Problem nicht wirklich, es verschiebt nur die vertraulichen Informationen.

+0

Verwenden Sie eine Art von Verschlüsselung für Ihre Zeichenfolgen. Das ist der einfachste und sicherste Weg. – lokusking

+0

Wenn Sie die Tests weitgehend verteilen, benötigt jeder, der sie ausführen möchte, den Benutzernamen und das Passwort. Nicht unbedingt im Klartext, aber das Programm wird sie brauchen, und Sie können sie rückentwickeln. – elyashiv

+1

Verwandeln Sie Ihre Server in Docker-Images und starten Sie sie, bevor Sie Ihre automatisierten Tests ausführen, und stoppen Sie sie, wenn Sie fertig sind. So spielt es in der Entwicklungsumgebung keine Rolle, ob Passwörter ... –

Antwort

0

Sie könnten sie in der App.Config Datei unter AppSettings setzen und erhalten sie mit ConfigurationManager

Einstellungen Code:

<appSettings> 
    <add key="username" value="lol" /> 
    <add key="password" value="hunter2" /> 
</appSettings> 

und auf sie zuzugreifen

var username = ConfigurationManager.AppSetting["username"]; 
var password = ConfigurationManager.AppSetting["password"]; 
+0

Wie löst das das Klartextproblem? – elyashiv

+0

nun, es wäre raus der Anwendung. Die Besonderheiten des Tests sind zwar wirklich angegeben, sie könnten jedoch für den Benutzer, der den Test ausführt, spezifisch oder zumindest veränderbar sein. Sie müssen von irgendwoher kommen. Anmeldedaten wie api-Token usw. sollten in die Config gestellt werden. Es ist der gleiche Ort, an dem eine DB-Verbindungszeichenfolge eingefügt wird, und das würde ich für ziemlich empfindlich halten. –

+0

richtig und ziemlich empfindlich garantiert keine Sicherheit. – elyashiv

0

Wie ich schrieb in die Kommentare, ich glaube nicht, dass genau das, was du machen willst, möglich ist. Irgendwann muss Ihr Programm die Zeile utilities.LogOnToApplication(username, password); ausführen, wobei Benutzername und Passwort einfache Zeichenfolgen sind. Wenn das Programm auf meinem Computer ausgeführt wird, kann ich einen Debugger verbinden und die Daten abrufen. Es gibt Möglichkeiten, es schwieriger zu machen, aber dieser Kampf wird zwischen Hackern und Spieleentwicklern ausgetragen, und der Verlierer ist die Seite, der du beitreten willst.

Die sicherste Sache wird sein, über das Testen nachzudenken - brauchen Sie sie wirklich "weit verbreitet"? wenn nein, nicht.

Es gibt einige Möglichkeiten, um es schwieriger zu machen, die U/P zu bekommen, es hängt alles davon ab, wie viel Aufwand Sie bereit sind, dies zu tun.

Verwandte Themen