Security Frage im Bezug auf File Management mit VB6

05/02/2009 - 11:08 von DerRatloseFranz | Report spam
Guten Morgen,

ich bin gerade dabei eine Bilderverwaltung mit Rechtevergabe zu
programmiern. Soweit steht schon alles, nur bin ich mir jetzt nicht so sicher
wie ich die Bilder generell absichere. Erst mal zum Programm:

Bei Programmstart wird der Anmeldename dem Programm übergeben. Das Programm
prüft dann die Datenbank, ob der Benutzer das Recht hat das Programm generell
zu öffnen. Anschließend nimmt er die Links aus der Datenbank und làdt die
Bilder von der Netzwerkfreigabe mit leserechte in ein Grid.

Mein Problem ist jetzt folgendes:
Die Bilder liegen im Moment noch auf einer Netzwerkfreigabe und werden über
diese dann geladen. Da der User aber LeseRechte auf die Bilder haben muss um
sie zu ins Grid zu laden müsste ich ja die Berechtigung auf die Freigabe
setzten, dass der User alle Bilder lesen kann. Das Problem dabei ist dann
aber, das wenn er sich die Netzwerkfreigabe verbindet kann er ja alle Bilder
lesen.

Dafür hàtte ich folgende Lösungsvorschlàge:

Ich verwendet ein "start" Programm welches nach testen der Berechtigung
mittels RunAS in einen anderen User Context wechselt und dieser User dann
Rechte auf dem Ordner hat. Problem hier bei ist, dass das Passwort in der Exe
steht und somit beim dekompilieren lesbar ist.

Ich packe die Bilder in die Datenbank als BLOB. Dabei ist das Problem, dass
die Datenbank sich zu sehr aufblàht und es langsamer ist.

Ich schreibe einen Service für den Server der auf Anfrage die entsprechenden
Bilder weiterreicht (in der theorie... hab noch nie nen Service geschrieben)



Was meint ihr? Welchen sollte ich Favorisieren. Oder habt ihr eine bessere
Idee oder würdet eine Idee komplett verwerfen?
 

Lesen sie die antworten

#1 Christian Zimmermann
05/02/2009 - 12:11 | Warnen spam
Hallo Franz,

DerRatloseFranz schrieb:

ich bin gerade dabei eine Bilderverwaltung mit Rechtevergabe zu
programmiern. Soweit steht schon alles, nur bin ich mir jetzt nicht so sicher
wie ich die Bilder generell absichere. Erst mal zum Programm:

Bei Programmstart wird der Anmeldename dem Programm übergeben. Das Programm
prüft dann die Datenbank, ob der Benutzer das Recht hat das Programm generell
zu öffnen. Anschließend nimmt er die Links aus der Datenbank und làdt die
Bilder von der Netzwerkfreigabe mit leserechte in ein Grid.

Mein Problem ist jetzt folgendes:
Die Bilder liegen im Moment noch auf einer Netzwerkfreigabe und werden über
diese dann geladen. Da der User aber LeseRechte auf die Bilder haben muss um
sie zu ins Grid zu laden müsste ich ja die Berechtigung auf die Freigabe
setzten, dass der User alle Bilder lesen kann. Das Problem dabei ist dann
aber, das wenn er sich die Netzwerkfreigabe verbindet kann er ja alle Bilder
lesen.

Dafür hàtte ich folgende Lösungsvorschlàge:

Ich verwendet ein "start" Programm welches nach testen der Berechtigung
mittels RunAS in einen anderen User Context wechselt und dieser User dann
Rechte auf dem Ordner hat. Problem hier bei ist, dass das Passwort in der Exe
steht und somit beim dekompilieren lesbar ist.



Das kann man so nicht gelten lassen. Die Passwörter für deine speziellen
User-Logons müssen ja auch irgendwo und irgendwie gespeichert werden.
Dieser Lösung vertraust du bereits (in deinem Falle der
Windows-Anmeldung). Du prüfst sogar nur die Windows Anmeldenamen und
logischerweise nicht die Passwörter, die du ja nicht kennst, gegen die
Datenbank. Das ist aber sehr leicht auszuhebeln, da man lediglich eine
weitere Windows-Installation mit gleichem Anmeldenamen benötigt, um die
gleichen Rechte zu haben. Deswegen verwendet Windows intern GUIDs, die
sich auch bei gleichnamigen Useraccounts unterscheiden würden. Falls du
die Benutzernamen über einen Domànenserver vergibst, besteht diese
Problematik allerdings nicht.

Ich packe die Bilder in die Datenbank als BLOB. Dabei ist das Problem, dass
die Datenbank sich zu sehr aufblàht und es langsamer ist.

Ich schreibe einen Service für den Server der auf Anfrage die entsprechenden
Bilder weiterreicht (in der theorie... hab noch nie nen Service geschrieben)



Was meint ihr? Welchen sollte ich Favorisieren. Oder habt ihr eine bessere
Idee oder würdet eine Idee komplett verwerfen?



Ich würde die Idee mit dem Service-Programm auf dem Server favorisieren.
Die Clients verbinden sich dann z. B. per WinSock mit der
Server-Anwendung. Dabei kannst du dann weitestgehend auf
Windows-Rechtemanagment verzichten, da nicht jeder User mit Logon-Daten
für jede entprechende Bildressource angelegt werden muss. Natürlich muss
das deine Anwendung verwalten (eigene Rechtevergabe), was sie ja aber
zum Teil bereits tut. Dazu wàre dann auch keine Netzwerkfreigabe mehr
nötig, da die Bilddaten komplett per Winsock übertragen werden.

Das wàre für mich die am besten zu handhabende Lösung mit hinreichender
Sicherheit. Ob du eher auf das Windows-Rechtemanagement baust oder dein
eigenes implementierst, mußt letztendlich du entscheiden. Es könnte sich
lohnen, auf das eigene Rechtemanagement zu setzen, wenn alles durch
deine Anwendung steuerbar sein muss, d. h. auch das Setzen der
(Windows-)Rechte. Dazu kann Windows durchaus von deiner Anwendung
veranlasst werden, aber dazu muß einiges beachtet werden und es können
sich bei der nàchsten Windows-Version wieder neu zu beachtende
Änderungen ergeben. Oder du verwendest eben die herkömmlichen
Windows-Tools zum Einrichten von (neuen) User und deren Rechten.

Gruß

Christian

Ähnliche fragen