我回来了另一个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)不允许以静默方式删除文件(在客户端计算机上,应用程序所在的位置)。它还无法获得会话数据。
答案 0 :(得分:1)
要解决此问题,您需要创建一个新的aspx文件,我们称之为file_loader.aspx。此aspx文件将负责对服务器上任何平面文件的访问控制。所有文件(例如xml文件)都应移到Web根目录之外。当用户连接并登录时,Web应用程序应该知道他们是谁以及他们有权访问哪些文件。您可以在数据库中为此创建一个表。此表将包含xml文件的路径以及“所有者”,或者可能是所有者列表。每次flash / flex应用程序想要从file_loader.aspx获取新的xml文件时,都应检查此表。
答案 1 :(得分:1)
我建议保存使用存储在会话上下文中的(对称)密钥加密的XML文件。这可以是一系列事件示例:
当Flex应用程序要求输入配置文件时,请执行以下操作:
Flex应用程序接收加密文件。然后它要求服务器提供解密密钥(使用HttpService或一些这样的AJAX调用),它使用as3crypto解密文件并使用它。
您应该在注销时从服务器中删除临时加密文件。
使用这种方法,密钥在内存中的服务器端生成,永远不会写入磁盘。密钥仅对该一个登录会话有效,对将来的会话无效。
答案 2 :(得分:1)
感谢所有参与讨论的人。这就是我所做的。
IIS 6对缓存有一些限制,它允许客户端保留,修改这些设置可以解决有关xml文件的问题。
当用户访问网站时,服务器会在数据库中查找其ID,如果发现它提供了相应的文件,则用户将被重定向。