Laden...

MVC 5 Dateien schützen

Erstellt von Adema vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.526 Views
A
Adema Themenstarter:in
10 Beiträge seit 2014
vor 9 Jahren
MVC 5 Dateien schützen

Hallo zusammen

Ich brauch wieder mal eure Hilfe.

Ich habe eine MVC 5 Webseite und möchte gerne alle Dateien in einem Ordner vor einem zugriff über die URL schützen.

Also bis jetzt ist es so dass man zwar nicht auf den Ordner zugreifen kann aber auf die Dateien wen man den Namen kennt der Datei.

zb. www.meinedomain.de/Daten/001.pdf

Kann mir jemand einen Tipp geben wie ich das machen kann?

Meine Idee ist dann das ich im controller eine Methode habe wo ich dann die Datei laden kann und zurück gebe mit "FileResult" wen dann der User bestimmte Bedingungen erfüllt.

Gruss Adema

16.835 Beiträge seit 2008
vor 9 Jahren

Dafür ist die webPages:enabled Eigenschaft, die Du in der Web.Config-Datei finden kannst, zuständig.
false wäre der von Dir gewünschte Wert.

Zudem werden URLs mit einer Dateiendung i.d.R. vom IIS verarbeitet, nicht von Deiner ASP.NET Anwendung.
Du kannst also viel in Deiner Anwendung versuchen abzufangen, wenn der Request gar nicht an die Webanwendung kommt.

A
Adema Themenstarter:in
10 Beiträge seit 2014
vor 9 Jahren

Was ist den der beste weg um Dateien zu schützen die auf meinem Server liegen aber nur bestimmte User Downloaden dürfen?

Ich müsste in dem Fall eine Filterregel/Freigabe auf dem IIS erstellen das diese URL ~/Daten/.. nicht abgerufen werden darf und nur lokale Zugriffe erlaubt sind?

Oder müsste der Ordner in einem ganz anderem Verzeichnis liegen? Die Frage wäre dann ob dies bei einem shared hosting überhaupt möglich ist.

5.658 Beiträge seit 2006
vor 9 Jahren

Hi Adema,

was spricht gegen:

Meine Idee ist dann das ich im controller eine Methode habe wo ich dann die Datei laden kann und zurück gebe mit "FileResult" wen dann der User bestimmte Bedingungen erfüllt.

Christian

Weeks of programming can save you hours of planning

16.835 Beiträge seit 2008
vor 9 Jahren

Das Problem besteht prinzipiell darin, dass Ressourcen-Dateien nicht vom ASP Handler abgedeckt werden.
Willst Du das, dann musst Du a) im IIS eingreifen und b) auch alle Ressourcen, die Du sonst hast (css, images, js) über den ASP Handler abarbeiten, was ziemlich Performance kostet.

Üblich ist daher eher sowas wie Mypage.com/DownloadFile?FileID=438624 oder FileName=fdsf.jpg

A
Adema Themenstarter:in
10 Beiträge seit 2014
vor 9 Jahren

dann müsste ich einfach genügend lange Dateinamen haben damit man Sie nicht zufällig findet ev. ein Guid oder so ?

Oder ich generiere die pdf's immer wen Sie abgerufen werden, so oft nicht abgefragt.

S
406 Beiträge seit 2007
vor 9 Jahren

Hi,

ich finde Abts Vorschlag für "webPages:enabled" sehr gut klingt nach einer guten Lösung.

bzw. wäre interessant zu wissen wie du bestimmst welcher User das Recht hat die Daten abzurufen. Welche Art der Authentifizeirung du nutzt.

Wenn du zum Beispiel vollen Zugriff auf den Webserver hast und dort auch eigene Dienste installieren kannst, dann könntest du dir auch nen Service bauen den die Webseite ansprechen kann, der nur intern auf dem Webserver zur Verfügung steht und der dir dann die entsprechenden Dateien aus dem Filesystem liest und übergibt, die kannst du dann per FileResult zurückgeben. Ist aber halt recht umständlich das ganze, aber mit Sicherheit auch "sicher" das keiner von außen an die Dateien rankommt, wenn er nicht berechtigt ist.

MFG

SquadWuschel

Mein Blog über .NET und MVC / EF | Meine kostenlose Onlinearbeitszeitverwaltung My:Worktime

16.835 Beiträge seit 2008
vor 9 Jahren

Alles, was irgendwie mit Download- oder Benutzerdaten zutun hat; das hat ohnehin nichts im Verzeichnis der Anwendung zu suchen.
Daher sollte es keine Probleme geben, wenn Du die Dateien von Ort A holst und dann via FileResult anbietest. Der Zugriff auf die Systemdateien der Anwendung wird mit webPagesEnabled ein Riegel vorgeschoben.

A
Adema Themenstarter:in
10 Beiträge seit 2014
vor 9 Jahren

Vielen Vielen Dank für eure Hilfe ich arbeite nun bei alle Dateien welche geschützt werden müssen mit FileResult.

Gruss Adema