I'm serving up documents that require the user to register before download. Currently, once you register and login, the links to the documents are displayed as:
myurl.com/docs/mypdf.pdf
So the physical path to the document is exposed to anyone logged in. What is the best practice for keeping the physical path to the document hidden so registered users can't share direct links with unregistered users or post direct links to the documents elsewhere?
EDIT: I was just looking for an idea that was language agnostic so I chose a few of my favorite languages for the tags. The actual implementation in this case is ASP classic. I'm currently using a download wrapper script that confirms the user is logged in before redirecting to the actual document URL. I just didn't include it in my question for simplicity.
Don't do that. Instead keep the files somewhere outside the document tree and then make them accessible using a script (eg, php, .Net, whatever)
The script can check if they are logged in, validate if they are allowed the file, and if so return it. The path they go to might look more like this... /download.php?file=mypdf.pdf
Something along the lines of...
<?php
if (IsUserLoggedIn())
readfile('/secret/path/to/file/mypdf.pdf');
?>
The best way is to read the file up from a non-web accessible path and write it to the output stream.
This seemed to show an OK example in php which you seemed to be using? Just add security check to top of php and kick them out if they are not authorized.
http://www.higherpass.com/php/Tutorials/File-Download-Security/
the best way to do that is to use a php/asp or serverside scripting file that reads the document a location that isnt available to the outside
that file then can check if the user is logged in and it can also hide the path to the physical file
so the url would be www.yourwebsite.com/file.php?file=image.png
file.php would verify that the user is logged in then it would read the file or redirect them to the login page
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With