我創建一個ASP.Net窗體與文件上傳控件,然後將電子郵件的形式和文件的詳細信息到另一個管理員。我想確保這個安全(對於服務器和收件人)。附件應該是簡歷,因此我將其限制爲典型的文本文檔。使ASP.Net文件上傳安全
從我能告訴我們最好的選擇是檢查文件擴展名或MIME類型是否屬於這種類型,並根據「幻數」檢查它以驗證擴展沒有被更改。我並不太在意如何去做這件事,但想知道這是否足夠。
我也很樂意使用第三方產品,注意到了這一問題,我已經看了一對夫婦:
blueimp jQuery的文件上傳 http://blueimp.github.io/jQuery-File-Upload/
和cutesoft ajaxuploader http://ajaxuploader.com/Demo/
但blueimp似乎仍然需要自定義服務器驗證(我猜只是jQuery它只是處理客戶端驗證)和.net之一檢查MIME類型匹配的擴展,但我認爲MIME類型遵循擴展無論如何。
所以,
我是否需要擔心服務器的安全性,當文件被作爲附件添加,但沒有保存? 是否有一個插件或控件來處理這個問題? 如果我需要實現某些服務器驗證,我自己是否將MIME類型與「幻數」匹配得足夠好?
我確定沒有任何東西是100%防彈的,但文件上傳是非常常見的東西,我假設大多數實現是「足夠安全」 - 但是怎麼做?
如果是相關的,這裏是我的基本代碼到目前爲止
<p>Please attach your CV here</p>
<asp:FileUpload ID="fileUploader" runat="server" />
並提交
MailMessage message = new MailMessage();
if (fileUploader.HasFile)
{
try
{
if (fileUploader.PostedFile.ContentType == "text")
{
// check magic numbers indicate same content type... if(){}
if (fileUploader.PostedFile.ContentLength < 102400)
{
string fileName = System.IO.Path.GetFileName(fileUploader.PostedFile.FileName);
message.Attachments.Add(new Attachment(fileUploader.PostedFile.InputStream, fileName));
}
else
{
// show a message saying the file is too large
}
}
else
{
// show a message saying the file is not a text based document
}
}
catch (Exception ex)
{
// display ex.Message;
}
}
_「當文件作爲附件添加但未保存時,我是否需要擔心服務器安全?」不確定你的意思?什麼是「保存」?對於過程的哪一部分「安全」?如果條件不滿足,你是否試圖從'''.files'屬性中移除文件對象? – guest271314
@ guest271314用戶正在上傳文件,並將其作爲附件添加到隨後發送的電子郵件中。據我所知這不會導致文件被保存在服務器上,我猜它最終會在郵件服務器上。收件人可能會保存它,但我的意思是它沒有保存在服務器上。 – wunth
_「收件人可能會保存它,但我的意思是它沒有保存在服務器上。」_您對所描述的過程有什麼擔憂? – guest271314