如何使用ASP.NET保护对SWF文件的访问?

时间:2010-04-06 04:53:20

标签: asp.net flash security iis

我们有一个我们想要保护的swf文件,只供授权用户使用。

我将文件嵌入到aspx页面中并且工作正常,因为ASP.NET处理aspx页面,我可以使用ASP.NET授权功能,并且在web.config中限制对roles =“AllowedUsers”的访问

然而,智能用户仍然可以直接访问该文件,例如www.mysite / flash.swf。我们希望进行这种访问安全

非常感谢任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:5)

Aristos,

你是对的。在我回家之前的一个下午,我尝试创建一个自定义的HTTP处理程序。它工作得很好。 :-)感谢您回答+1

public class CustomFlashHandler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
  if (!context.User.Identity.IsAuthenticated)
  {
    context.Response.Redirect("Default.aspx?ReturnUrl=%2felVideo.aspx");
    context.Response.StatusCode = 401;
    return;
  }

  var url = context.Request.CurrentExecutionFilePath;

  if (string.IsNullOrEmpty(url)) return;

  HttpContext.Current.Response.ClearContent();
  HttpContext.Current.Response.ClearHeaders();
  HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("filename={0}", url));
  HttpContext.Current.Response.AddHeader("Content-Type", "application/x-shockwave-flash");
  HttpContext.Current.Response.WriteFile(url);
  HttpContext.Current.Response.End();
}

public bool IsReusable
{
  get { return false; }
}

}

像Aristos所说,你必须映射ASP.NET以处理IIS中的.swf文件。

alt text http://www.freeimagehosting.net/uploads/30424ac60a.png

然后在应用程序的web.config中添加自定义映射

<httpHandlers>
  <add verb="*" path="*.swf" type="XXXXX.Web.XXXXX.CustomFlashHandler" validate="false" />
</httpHandlers>

1:href = http://www.freeimagehosting.net/&gt; http://www.freeimagehosting.net/uploads/30424ac60a.png

1:a href = http://www.freeimagehosting.net/&gt; http://www.freeimagehosting.net/uploads/30424ac60a.png border = 0 alt =“免费图片托管”&gt;

答案 1 :(得分:1)

我认为最简单快捷的解决方案是将此扩展(.swf)映射到asp.net来处理。

我不知道它是否有效,因为我没有这样做,但你可以尝试一下。

另一种方式是放置这些文件,隐藏的地方或复杂名称,并使用 .ashx 文件来阅读和发送它们。在.ashx文件中,您需要为Flash设置正确的 Response.ContentType ,然后阅读并发送正确的文件