是否可以使这个Flex / Flash应用程序安全?

时间:2010-03-05 18:17:33

标签: c# asp.net flex flash security

我回来了另一个Flex / Flash安全问题。我已经收到关于这个主题的some help from the community,但我仍然不太确定这是最好的方法。

这就是事情。一个flex web应用程序,许多用户(1000+),应用程序的自定义配置,具体取决于用户组。我能把这件事安全......还是更安全。

目前,当用户访问应用程序时,只有一种配置可能,但对于下一版本,我们已经实现了多配置协议,这样: 1.用户连接到Default.aspx,服务器代码处理Windows凭据(在Intranet上),并提供正确的xml配置文件。
2. flex应用程序将xml conf文件作为flashvar加载,然后应用程序使用xml文件的内容“构建”自身。

众所周知,由于这是一个flex应用程序,因此swf也会下载到客户端计算机和xml文件中。如果多个用户从同一台计算机连接到该应用程序,则可能会在windows temp文件夹中看到另一个xml文件。

应用程序的当前目录看起来像这样:

Web site
    |-> default.aspx
    |-> index.swf 
    |-> configAdmin.xml 
    |-> configUserType1.xml 
    |-> configUserType2.xml 
    |-> com 
         |-> a lot of swf and xml files

我首先考虑制作另一个包含所有配置xml文件的目录(没有客户端的读取权限),选择正确的文件,将其复制到客户端并在之后删除它。但似乎我必须知道用户在下载/删除计算机上的内容时知道...

我的想法已经不多了,所以我希望你有一些好主意。这是一些设计缺陷(在应用程序构建的方式,而不是在Flash:p)请分享。我一直期待着改进。

由于

更新 在浏览器中,Flash / Flex(没有AIR)不允许以静默方式删除文件(在客户端计算机上,应用程序所在的位置)。它还无法获得会话数据。

3 个答案:

答案 0 :(得分:1)

要解决此问题,您需要创建一个新的aspx文件,我们称之为file_loader.aspx。此aspx文件将负责对服务器上任何平面文件的访问控制。所有文件(例如xml文件)都应移到Web根目录之外。当用户连接并登录时,Web应用程序应该知道他们是谁以及他们有权访问哪些文件。您可以在数据库中为此创建一个表。此表将包含xml文件的路径以及“所有者”,或者可能是所有者列表。每次flash / flex应用程序想要从file_loader.aspx获取新的xml文件时,都应检查此表。

答案 1 :(得分:1)

我建议保存使用存储在会话上下文中的(对称)密钥加密的XML文件。这可以是一系列事件示例:

  • 登录:为会话生成symmeteric密钥,将其保存在与会话关联的内存中
  • 加载配置XML,使用会话密钥对其进行加密,并将其保存在唯一名称下。将此名称存储在会话中

当Flex应用程序要求输入配置文件时,请执行以下操作:

  • 在会话中查找文件名。
  • 将加密文件发送到Flex

Flex应用程序接收加密文件。然后它要求服务器提供解密密钥(使用HttpService或一些这样的AJAX调用),它使用as3crypto解密文件并使用它。

您应该在注销时从服务器中删除临时加密文件。

使用这种方法,密钥在内存中的服务器端生成,永远不会写入磁盘。密钥仅对该一个登录会话有效,对将来的会话无效。

答案 2 :(得分:1)

感谢所有参与讨论的人。这就是我所做的。

IIS 6对缓存有一些限制,它允许客户端保留,修改这些设置可以解决有关xml文件的问题。

当用户访问网站时,服务器会在数据库中查找其ID,如果发现它提供了相应的文件,则用户将被重定向。