代码安全【待续】

来源:互联网 发布:大数据的就业前景 编辑:程序博客网 时间:2024/04/27 08:40
1.Path Manipulation

通过用户输入控制 file system 操作所用的路径,借此攻击者可以访问或修改其他受保护的系统资源。

解决方案: 【应该屏蔽动态路径中的/,\,../,..\,避免操做同目录其他文件和父目录的文件】

当满足以下两个条件时,就会产生 path manipulation 错误:

1. 攻击者能够指定某一 file system 操作中所使用的路径。

2. 攻击者可以通过指定特定资源来获取某种权限,而这种权限在一般情况下是不可能获得的。

例如,在某一程序中,攻击者可以获得特定的权限,以重写指定的文件或是在其控制的配置环境下运行程序。

例 1: 下面的代码使用来自于 HTTP 请求的输入来创建一个文件名。 程序员没有考虑到攻击者可能提供像 "..\\..\\Windows\\System32\\krnl386.exe" 这样的文件名,这会导致应用程序删除一个重要的 Windows 系统文件。

String rName = Request.Item("reportName");...File.delete("C:\\users\\reports\\" + rName);


例 2: 下面的代码使用来自于配置文件的输入来决定打开哪个文件,并返回给用户。 如果运行程序必须具有一定的特权,并且恶意用户能够篡改配置文件,那么他们就可以使用程序来读取系统中以 ".txt" 扩展名结尾的任何文件。

sr = new StreamReader(resmngr.GetString("sub")+".txt");while ((line = sr.ReadLine()) != null) {Console.WriteLine(line);}
原创粉丝点击