代码安全【待续】

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值