在过去,许多应用程序都在Temp / Tmp目录中存储了临时文件; 系统或用户特定的。 最近虽然我们在企业中有许多用户使用Temp目录,但由于病毒扫描工具或主机入侵防护工具和策略不允许使用这些位置,因此这些用户被阻止。 我认为这里的恐惧是多个应用程序可以从该位置读取和写入,所以stream氓应用程序可能会对另一个应用程序或其临时存储的数据产生负面影响。 这似乎是一个正确和更安全的运作方式,所以我不能要求人们开始允许增加风险。
我的问题是如何/在哪里(物理)安全地存储用户特定的,应用程序特定的,但临时文件。
应该预计每个应用程序自己pipe理,还是有一些新的应用程序和用户沙箱临时数据存储function,我不知道?
具体来说,我专注于使用.NET 4.0 +,C#和Windows 7 +,但这个问题也应该适用于Windows上使用的其他语言。
为什么Apache需要SSLCertificateKeyFile?
当应用程序需要pipe理员权限时,Windows 7会popup消息吗?
我如何防止DLL注入
在networking中安全地共享数据有什么不同的方法?
在Ubuntu上有多个用户的Git仓库
类似,但较老,不够具体的线程
C#最佳实践:编写“临时”文件供下载:放置在应用程序的环境文件夹或临时文件夹中
病毒扫描程序locking和删除临时文件 – 最好的办法来应付他们?
Windows临时目录详细信息(Java)
https://stackoverflow.com/questions/30547113/secure-temp-file-creation-within-temp-directory
encryption内容和文件名称的答案似乎不是最佳实践解决scheme,并且仍然会被主机入侵防御系统阻止。
解决Windows 7中registry操作限制的解决方法?
在安全隔离的情况下在LAMP上运行多个站点
.NET安全策略由标准用户更改?
如何阻止我的安装程序触发Windows 10的“此应用程序已被阻止您的保护”错误?
根据MS准则, ApplicationData目录确实是存储应用程序特定文件(包括临时文件)的正确位置。 但是,这不一定能解决您的安全问题。 是否解决问题取决于问题是什么。
Windows使用ACL来授予/限制文件系统目录的权限。 ACL特定于用户,组或一组用户/组。 没有具体的应用程序。 假设一个特定的用户Art运行一个应用程序Papp , Papp将其数据存储在C:UsersArtAppDaTaroamingPapp 。 如果Art运行Qapp则Qapp (除非以不同的用户身份运行)可以访问Papp's文件。
请注意,默认情况下,环境变量TMP和TEMP在AppData下,所以在安全方面, ApplicationData特殊文件夹没有更好或更差。 (虽然比C:temp和c:tmp )。
如果用户Betty运行Qapp那么默认情况下, Qapp将不能访问Art的Papp文件,如果他们在他的AppData 。 所以如果安全问题是阻止运行Qapp 其他用户访问Art的Papp文件,那么AppData下的任何目录都可以工作。
但是如果问题出在运行Qapp Art(可能是恶意软件,可能是Art没有故意运行的东西),那么一些解决方案是:1)使用白名单程序,只允许授权程序运行; 2)使用黑名单程序(即传统的反病毒),试图阻止像Qapp 3)混合方法的恶意程序,其中可信程序作为Art运行,不可信程序作为另一个没有特权的用户运行或在沙箱中运行。
您应该使用通常被称为AppData的特殊文件夹。 这可以通过调用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)在C#中访问。
在MSDN上ApplicationData的描述如下:
作为当前漫游用户的应用程序特定数据的公共存储库的目录。
我为金融服务客户端创建了许多应用程序(即高度受限和锁定的企业桌面环境),使用这个位置并且在那里创建临时文件没有任何问题。
MSDN:Environment.SpecialFolder
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。