Creating a file Manager

Posted on 2010-08-14
Last Modified: 2012-05-10
I'm creating a file manager for a client with classic asp. All files in the folder should only be accessible upon login. Each user has their own unique login id. It works fine until one day someone google search the file and manage to open the file directly from the google link. Is there anyway for me to prevent anyone who has the exact url link to download the file.
Question by:hannsmedia
  • 2
LVL 95

Expert Comment

by:Lee W, MVP
ID: 33435810
Just a thought... use a session variable to note that a login has been successful.  Then on every page (perhaps with an include) verify that session variable is set appropriately - if not, redirect to a login page.
LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 33439757
I think the problem is even if you password protect your page, the actual file can be surfed to.  So one option is to update your robots.txt.  But that does not mean another bot will respect it.  A 2nd option will be to simply lock down the folder and give everybody the same password.  But that is not always easy to manage.  Check out AspUpload   There is a also a download feature where you can place your files in a locked down folder and the com object can access the locked down folder as a user.  

It's not free, but for $200 it is cheaper then trying to recreate it on your own time.  If you are hosted on a shared service, check with your host, many hosts will already have this installed and ready to go.
LVL 28

Accepted Solution

sybe earned 500 total points
ID: 33443383
Put the files out of the www, so they are no directly accessible. For example in (a subdirectory of) the _private directory.

Filedownload is easy in pure ASP, no need for a costly component. See attached code. Create an asp-file "download.asp" which first checks the login of the users. If not logged in, redirect them to the login page. If logged in send the file.

Sub WriteFileToBrowser(ByVal sFilePath, ByVal sContentType, ByVal sDisplayName)
	Dim oStream, bBuffer, iFileSize, iChunk, i

	Response.Buffer = True
    Server.ScriptTimeout = 30000
    iChunk = 64000

	Set oStream = Server.CreateObject("ADODB.Stream")
	oStream.Type = 1
	oStream.LoadFromFile sFilePath
	iFileSize = oStream.Size

	Response.ContentType = sContentType
	Response.AddHeader "Content-Disposition", "filename=" & sDisplayName
    Response.AddHeader "Content-Length", oStream.Size

	For i = 1 To iFileSize \ iChunk
        If Not Response.IsClientConnected Then Exit For
        Response.BinaryWrite oStream.Read(iChunk)

    If iFileSize Mod iChunk > 0 Then
        If Response.IsClientConnected Then
            Response.BinaryWrite oStream.Read(iFileSize Mod iChunk)
        End If
	End If
	Set oStream = Nothing
End Sub

Open in new window

LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 33445186
sybe, I tried your code with the following:
WriteFileToBrowser "D:\inetpub\wwwroot\hidden\myimage.jpg", "image/jpg","renameimage.jpg"
Works great.  I like the ability to change the image name too.   However, if the site is on a shared server, it is possible that you do not have access to a folder outside of the www directory.  If that is the case, it is still possible that the "hidden" directory can be cached by a search engine.  So if there is a way to add to your code a way to impersonate permissions from something other then "everyone" and remove read permissions from "everyone", that would make your solution work for those types of shared servers that cna't access outside the www folder.

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today, security is a big concern in an organization to prevent sensitive data leakage. In Outlook you can secure your Outlook items (emails, calendars, contacts and other stuff) using various techniques like by marking item as private, or you can pu…
Envision that you are chipping away at another e-business site with a team of pundit developers and designers. Everything seems, by all accounts, to be going easily.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now