Solved

Security Exception trying to ftp a file

Posted on 2009-05-18
15
221 Views
Last Modified: 2012-05-07
I need some assistance.

Please to the following URL:

http://www.notlwonks.com/boomerang

and try to upload an Excel file ( .XLS ), or I suppose any file will do.


If you get a Security Exception -- that is what I need help with.  

Here is my FTP code (see snippet):
public bool UploadFile(FileInfo oFile)

    {

      FtpWebRequest ftpRequest;

      FtpWebResponse ftpResponse;

            

      try

      {

        //Settings required to establish a connection with

        //the server

        ftpRequest = (FtpWebRequest)FtpWebRequest.

           Create(oFile.Name);

        ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;

        ftpRequest.Proxy = null;

        ftpRequest.UseBinary = true;

        ftpRequest.Credentials =

           new NetworkCredential("notlwonks", "<you wish>");

        ftpRequest.KeepAlive = true;

        ftpRequest.EnableSsl = false;

        // Validate the server certificate with

        // ServerCertificateValidationCallBack

        //if (UseSSL) ServicePointManager.

        //   ServerCertificateValidationCallback = new

        //      RemoteCertificateValidationCallback

        //      (ValidateServerCertificate);
 

        //Selection of file to be uploaded

        byte[] fileContents = new byte[oFile.Length];
 

        //will destroy the object immediately after being used

        using (FileStream fr = oFile.OpenRead())

        {

          fr.Read(fileContents, 0,

          Convert.ToInt32(oFile.Length));

        }

        using (Stream writer = ftpRequest.GetRequestStream())

        {

          writer.Write(fileContents, 0, fileContents.Length);

        }

        //Gets the FtpWebResponse of the uploading operation

        ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

        //Display response

        //Response.Write(ftpResponse.StatusDescription);
 

        ftpResponse.Close();

        ftpRequest = null;
 

        return true;

      }

      catch (WebException webex)

      {

        return false;

        //this.Message = webex.ToString();

      }

    }

Open in new window

0
Comment
Question by:knowlton
  • 9
  • 6
15 Comments
 
LVL 7

Expert Comment

by:ajolly
ID: 24418369
where does this file get uploaded.
I mean .. have you checked the write permission to the folder where the uploaded file is being written.

I am not very clear with the code, where the file is being uploaded.
0
 
LVL 5

Author Comment

by:knowlton
ID: 24423872
The folder is located at:

http://www.notlwonks.com/boomerang

I am providing the FTP object with the same login credentials as I use with my FTP client ... so in my mind it should be working.  I am not sure why security is an issue, to be honest, because I should be authenticating.  
0
 
LVL 7

Expert Comment

by:ajolly
ID: 24424089
no.. when you use asp.net , you need to provide the write permissions to Network Service account, ASP.Net account, IUSR_<MachineName> account.

To verify, you can set the full permission for all users, and then try uploading.
If it works, that means you need to provide the correct permissions.
0
 
LVL 5

Author Comment

by:knowlton
ID: 24424259
>>>>To verify, you can set the full permission for all users, and then try uploading.

-----------


How do I do this?
0
 
LVL 5

Author Comment

by:knowlton
ID: 24424635
I went in and set all the permissions to write / read for ROOT and then I INHERITED all permissions.

It still does not work.

Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
0
 
LVL 7

Expert Comment

by:ajolly
ID: 24427919
Exceptions from the System.Security.Permissions namespace are thrown when code access policies are not met.
To configure a policy you can use "Admin Tools" -> ".Net Framework v?.? Configuration" or caspol.exe.

You will probably need to create a new Permissin Set (duplicate existing is simpler) and add File IO permission and assign this to the appropriate Code Group.

Check out http://msdn.microsoft.com/en-us/library/930b76w0.aspx for more info.
0
 
LVL 5

Author Comment

by:knowlton
ID: 24427992
ajolly:

Can you give me more clear instructions?  I am not familiar with the process you are describing.

Tom
0
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.

 
LVL 5

Author Comment

by:knowlton
ID: 24427995
You do understand that I am talking about a hosted website, right?
0
 
LVL 7

Expert Comment

by:ajolly
ID: 24428072
Sorry, i didn't mind if you ever mentioned about Hosted Website.

In case of Hosted Website, If it is a shared hosting, you will not do anything, in fact they will never allow you to do this. The only thing you can do is to ask your hosting provider to set proper rights for read/write.

I am just thinking, if it is a hosted environment, how did you check if all the permissions are set, which I asked you to check in previous posts !!!

Usually the good hosting providers have the experts to understand the .net framework, and they know how to give trust to an application for IO operations.

The best I can tell you is that it is the issue with permissions.
0
 
LVL 5

Author Comment

by:knowlton
ID: 24434239
ajolly:

I guess the think I don't understand is this:

If I can already connect using filezilla ( an FTP client ) -- then why can't I do the SAME THING in my C# code behind?
0
 
LVL 7

Accepted Solution

by:
ajolly earned 500 total points
ID: 24437337
FTP client and the server side code works in a different way.

It is something like there is some code you have put on the server, and this code is trying to do whatever the code wants. In hosted environment, the code access security becomes vital, because your code is on server and you can do whatever you want if your code is not controlled by security permissions.

In case of FTP Client, it runs the code in your local machine, and needs only write permission to the folder.
0
 
LVL 5

Author Comment

by:knowlton
ID: 24437554
>>>and needs only write permission to the folder.

there's no way for me to do this using FtpRequest -- even though I can authenticate!!!????


This just seems odd to me.
0
 
LVL 5

Author Closing Comment

by:knowlton
ID: 31582853
I'll give you the points NOW -- but I would like to continue to discuss this as long as you have patience to do so.  :)   Many thanks!
0
 
LVL 7

Expert Comment

by:ajolly
ID: 24438728
no .. its not odd.

asp.net code has the capabilities... to do massive on server.
as it runs on the server, the code can access any directory and delete the contents or modify the registry settings.

and to control this, the hosting environment, controls is via the security model.

I will try to find some more information about the new classes added in .net framework 3.5 for the hosting environment permissions, and update you in some time.

thanks for the points.
0
 
LVL 5

Author Comment

by:knowlton
ID: 24438981
Thanks, ajolly.

Tom
0

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

AJAX ModalPopupExtender has a required property "TargetControlID" which may seem to be very confusing to new users. It means the server control that will be extended by the ModalPopup, for instance, if when you click a button, a ModalPopup displays,…
One of the pain points with developing AJAX, JavaScript, JQuery, and other client-side behaviors is that JavaScript doesn’t allow for cross domain request for pulling content. For example, JavaScript code on www.johnchapman.name could not pull conte…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

929 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

8 Experts available now in Live!

Get 1:1 Help Now