.net 基于业务逻辑屏蔽web资源的策略是什么

.net 基于业务逻辑屏蔽web资源的策略是什么,.net,asp.net,security,.net,Asp.net,Security,我有一个场景,我不确定我的方法是否是最好的,我希望得到反馈/建议 情景: 我有一堆基于flash(swf)的“模块”,它们托管在我的aspnet应用程序中。每个闪存在文件系统上都有自己的目录,其中包含闪存的资产。考虑这个简化的站点结构: /webapp/index.aspx /webapp/flash/flash1/flash.swf /webapp/flash/flash1/someimage.jpg /webapp/flash/flash1/someclip.mp3 /webapp/flas

我有一个场景,我不确定我的方法是否是最好的,我希望得到反馈/建议

情景: 我有一堆基于flash(swf)的“模块”,它们托管在我的aspnet应用程序中。每个闪存在文件系统上都有自己的目录,其中包含闪存的资产。考虑这个简化的站点结构:

/webapp/index.aspx
/webapp/flash/flash1/flash.swf
/webapp/flash/flash1/someimage.jpg
/webapp/flash/flash1/someclip.mp3
/webapp/flash/flash2/flash.swf
/webapp/flash/flash2/someimage.jpg
/webapp/flash/flash2/someclip.mp3

等等

其中命名约定为/webapp/flash/flash[ID]/

我想实现一种安全机制,检查是否允许用户访问子文件夹“[ID]”中的文件及其内容

**在此插入基于存储在SQL数据库中的信息的业务逻辑*

我正在考虑编写一个HttpModule,它的功能如下

ProcessRequest(){
    if(Request.RawUrl.Contains("/webapp/flash") && !userHasValidLicenseForModule(1)){
        Redirect("login.aspx");    
    }
}
但有一个缺点是,HttpModule只适用于映射到aspnet(在IIS6中)的文件扩展名。这意味着我必须将所有可能的扩展映射到该进程(.mp3、.jpg等),这是我宁愿避免的

我也在考虑改用HttpHandler,但是flash文件需要能够使用相对url链接到它的资源。(因此不推荐使用类似代理的模式,如/webapp/getprotectedstuff.ashx?file=flash1234/flash.swf)

也许将flash文件和资产完全存储在web根目录之外更明智。也许我还没有想到其他的策略

使用aspnet安全性并编写自定义成员资格提供程序


有什么想法吗?

您是否考虑过在swf加载后通过HTTP请求验证对服务器的资源访问

在我工作的地方,我们通过flash向用户提供在线培训,而不是验证HTTP请求本身,我们允许swf先加载,然后向服务器发出请求,以验证用户应该可以访问swf,并且他们是从我们的站点内部而不是从其他位置访问swf

如果验证的任何步骤失败(或者在必要的位置找不到身份验证文件,或者用户没有有效的会话,或者没有访问特定培训的权限),那么他们将在flash中收到错误,并且不会加载任何重要内容


另一方面,如果您决定严格限制对文件的访问,以便只有那些应该有访问权限的人才能加载文件,那么我可能会建议您使用第二个选项,将文件存储在单独的,非公共位置,然后使用处理程序脚本加载swf。

为什么不使用ISAPI过滤器?
好吧,不要回答这个问题-有很多理由;-)。但是严肃的是,如果你有DEV的力量,你可能想考虑这个路线。 否则,如果您有一个简短的、封闭的扩展列表(GIF、JPG、MP3),HTTP模块似乎是更好的选择。如果是长期的,或者是无止境的,我会同意并放弃

如果适用,您可能希望研究的另一个选项是基于角色的NTFS访问列表。如果这样做合适,这可能是最简单、最干净的方法