3

現在、ファイル管理とアップロードの Web アプリケーションを構築していますが、これまでほとんど行っていないことの 1 つは、安全でないファイル タイプに対するセキュリティです。私はこれまで行ったことがないため、セキュリティを組み込むための良い方法を見つけようとして、オンラインで読んでいます。ブラックリストとホワイトリストは包括的な答えのようですが、それを実装する最良の方法はわかりません. 私のアプリケーションは ASP.net MVC 4 で構築されており、現在持っている唯一のセキュリティは次のとおりです。

 /// Check to see if the file isn't of the appropriate type

 if (extension == ".asp" || extension == ".exe" || extension == ".js")
 {
     ModelState.AddModelError("fileError", "That filetype is not permitted.");
 }

私はそのリストに基づいて、次のものを許可しないようにしました。 ani, asf, asp, avi, bas, bat, bin, chm, cmd, com, cpl, cur, eml, exe, hta, ico, js, jse, midi, mp3, mpa, mpe, mpeg, mpg, msc, msp, pcd, pif, rar, reg, scr, sct, vb, vbs, wma, wmf, wmv, wsc, wsf

私の現在のアイデアは次のようになります (半疑似コードなので、構文は完全ではありません)。

// in my model
public static bool IsInBlacklist(string extension)
{
    string[] blacklist = ani, asf, asp, avi, bas, bat, bin, chm, cmd, com, cpl, cur, eml, exe, hta, ico, js, jse, midi, mp3, mpa, mpe, mpeg, mpg, msc, msp, pcd, pif, rar, reg, scr, sct, vb, vbs, wma, wmf, wmv, wsc, wsf
    for int i = 0; i < blacklist.length(); i++
        if extension == blacklist[i]
            return true
        return false
}

// in my controller
if (IsInBlacklist(extension))
{
    ModelState.AddModelError("fileError", "That filetype is not permitted.");
}

これは良いアプローチですか?アプローチが悪い?より理想的な方法は、MIMEType (アクセスできる) をチェックすることだとわかっていますが、その周りにブラック/ホワイト リストを作成する方法がわかりません。

4

0 に答える 0