Gå til innhold

[Løst] Hvordan kan jeg unngå direkte nedlasting på webserver?


Anbefalte innlegg

Som topic sier, så lurer jeg på hvordan jeg kan unngå direkte nedlasting av filer på webserveren min.

Fra før av har jeg laget et system ved hjelp av php og mysql som laster ned filer ved at en indeks blir spesifisert. URLen er da lagret i databasen, og blir sendt til brukeren når han kjører en spørring mot databasen om å hente den spesifiserte filen. Per i dag blir ikke selve linken til filen direkte synlig, men en trenger ikke å være et geni for å finne det ut.

 

Jeg holder også på å lage et medlemssystem hvor det kun er de som har en bruker på websiden min som skal ha tilgang til bestemte filer - og disse skal være utilgjengelig for alle andre. Finnes det en måte å samkjøre php og .htaccess filen på slik at det for eksempel lagres en nøkkel i sessionen til de som er medlem, og at dette sjekkes i .htaccess når de prøver å laste ned?

Endret av v3g4rd
Lenke til kommentar
Videoannonse
Annonse

Se for deg følgende link.

 

file.php?id=5&sesid=1f73402c644002a7ea3c9532e8ba4139

.. sesid her er inneholdet i en session lagret på server, f.eks. MD5-hash av brukernavn/passord+ip. Ved hvert request sammenlikner du sesid i $_GET og $_SESSION og gir eventuelt tilbake en feil. På denne måten vil alle brukere ha hver sin unike link til samme fil og ingen kan dele disse med hverandre, uten å bruke samme brukerkonto.

Lenke til kommentar

Men nettleseren deres får allikevel tilsendt en direkte link til filen, som gjør at de kan laste ned denne filen senere eller spre den direkte linken videre til andre som igjen vil unngå denne kontrollen?

 

Systemet mitt i dag fungerer slik:

 

Brukeren får servert følgende url på nettsiden

download.php?id=5

Hvis denne linken finnes, videresendes den egentlige URLen til brukeren. For eksempel:

/downloads/fil1.rar

Endret av v3g4rd
Lenke til kommentar

Ikke nødvendigvis. Dersom du viderefører med header-location blir det naturligvis et problem, men det må du jo ikke finne på å gjøre.

 

Edit: Ta en titt på header(), dersom du ikke allerede er kjent med denne.

 

<?php

// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');

?>

Endret av Jonas
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...