繁体   English   中英

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

[英]What are security issues in creating file

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

“ C:\\ Folder1 \\ Folder2 \\ Myfile.txt”(可配置)

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

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

他说与此有关的安全问题,但不确定是什么,所以我想到将其发布在这里。

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

第一种方法对安全性有何影响?

写入问题是,试图在C根文件夹中创建的用户可能没有在该位置创建该文件的权限。 永远不要假设用户永远是管理员。

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

是的,可能有问题。 您的程序很可能将在交互式用户帐户下运行,因此要遵守其上施加的所有UAC条件。

如果这只是一个日志文件,则一种方法是使用临时文件,因此请使用:

http://msdn.microsoft.com/zh-CN/library/system.io.path.gettempfilename.aspx

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

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

通过检查对运行您的apppool的帐户的权限来验证访问权限

或通过代码看到此

没有代码天生就是不安全的。 所有这些都取决于其余代码的外观,但是作为一般经验法则,您应该限制应用程序可以访问哪些文件以及如何访问它们。 在不损害应用程序功能的情况下,尽可能地限制它。

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

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

并且用户输入相对路径,例如..\\Windows\\Passwords.txt他将有效地访问c:\\windows\\passwords.txt

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

这只是可能发生的事以及限制应用程序权限的一个好主意的示例。 此时,您的代码可能非常安全,但是限制权限是我们的首要考虑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM