创建文件时存在哪些安全问题

本文关键字:安全 问题 存在 文件 创建 | 更新日期: 2023-09-27 18:00:50

我正在为我的应用程序编写日志,路径为:-

"C:''Folder1''Folder2''Myfile.txt"(可配置(

如果这个文件不存在,我会在代码中创建文件夹结构和文件(如果没有C驱动器,我会弹出一条消息,说日志目录不存在(。

在代码审查中,一位同事说,我不应该使用代码创建文件夹和文件,而应该要求客户创建文件,只对该文件执行写操作。

他说这有安全问题,但不确定是什么,所以我想把它发布在这里。

请帮助我决定是否应该创建文件(如果不存在(,或者要求客户端在每次安装时创建。

第一种方法的安全含义是什么?

创建文件时存在哪些安全问题

写入问题是,试图在C根文件夹中创建的用户可能没有在那里创建它的权限。永远不要认为用户总是管理员。

这也是windows的UAC的问题,这将是一个问题。

是的,可能存在问题。您的程序很可能在交互用户帐户下运行,因此受到任何UAC条件的约束。

如果这只是一个日志文件,一种方法是使用一个临时文件,所以使用:

http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx

这应该在登录用户本地的一个区域中创建,该区域应该允许写入文件。

我看到的安全问题是web应用程序访问和写入目录中文件的能力(如您所述,是可配置的(。

要通过检查授予您的应用程序池运行的帐户的权限来验证访问权限

或通过代码查看此

没有任何代码本质上是不安全的。这一切都取决于代码的其余部分是什么样子的,但根据经验,您应该限制应用程序可以访问哪些文件以及如何访问这些文件。在不损害应用程序功能的情况下,尽可能限制这种情况。

由此产生的安全漏洞允许用户读取他不应该读取的文件,或者写入重要文件并以这种方式损坏它。例如,若使用用户输入创建文件路径,则用户可以修改路径,以便访问不允许访问的文件。如果你创建这样的路径:

string filePath = "c:''mysafefolder''" + fileName;

并且用户进入相对路径(例如..'Windows'Passwords.txt(他将有效地获得对c:'windows'passwords.txt的访问。

如果将应用程序配置为阻止对文件系统的任何部分(mysafefolder除外(的访问,则读取机密文件的尝试将失败。

这只是可能发生的情况的一个例子,以及为什么限制应用程序权限是个好主意。在这一点上,您的代码可能是完全安全的,但限制权限是提前考虑的。