1

在我的 MVC 3 项目中,我在项目的根目录中有一个文件夹,用于存储一些 SWF 文件。问题是,当我点击浏览器地址栏中的 url 时,例如

localhost:39217/Files/fg/f_l1.swf

显然我看到了下载对话框。有什么办法可以预防吗?换句话说,加载 DOM 后,该文件将在我的页面中可见,但如果我只是键入它的 URL,我不希望它被下载。恐怕这两种情况在 IIS 中都受到同样的威胁。有任何想法吗 ?

4

1 回答 1

1

我可以看到解决此问题的一种方法是不要向用户透露真实的物理路径基本上,您应该从控制器操作传递 SWF 文件。

如果您通过对象标记嵌入 SWF 文件,则对象标记将引用此操作并传递文件名。您可以通过Authorize属性或其他方式控制操作,一旦您看到请求被正确授权,您就可以将 flash 文件写入响应。

尽管代码在 PHP 中,但这里清楚地解释了这个想法,您可以将其迁移到 MVC。

更新:

如果您不想更改 SWF 文件路径,那么您只需在 Global.asax.cs 中做更多的工作。

routes.IgnoreRoute("Javascript/{*catchall}");
routes.IgnoreRoute("Content/{*catchall}");
routes.IgnoreRoute("Scripts/{*catchall}");

routes.RouteExistingFiles = true;

routes.MapRoute("", "Files/Flash/{file}", new { controller = "File", action = "Flash" });

现在即使有人试图直接知道路径访问 SWF 文件,请求由控制器的Flash操作处理,File您可以在那里进行必要的身份验证。在发回 SWF 之前检查。

于 2012-06-25T16:27:42.557 回答