13-系统信息泄露(内部)缺陷
2025/1/1大约 2 分钟安全开发安全开发应用安全
系统信息泄露(内部)缺陷 - 腾讯安全代码审计实战系列13
将系统内部信息打印到日志、文件或控制台时,可能导致信息泄露。这些信息可能包括数据库连接字符串、操作系统类型、应用程序配置或其他敏感信息,使攻击者能够更容易地对系统进行攻击。
修复建议
- 避免直接打印程序堆栈。
- 在抛出异常时不要直接输出详细错误信息,而应使用日志级别控制或错误处理机制来避免泄露敏感信息。
- 对敏感信息进行脱敏处理后再进行记录或显示。
- 使用结构化日志记录系统来确保日志仅包含非敏感信息。
- 定期审查日志内容,以识别并删除潜在泄露信息。
示例代码
class Program
{
static void Main()
{
//bad:直接使用 Console.WriteLine 输出敏感信息
string connectionString = "database=northwind;server=mySQLServer...";
Console.WriteLine(connectionString); // 命中漏洞规则
//good:移除敏感信息或使用脱敏处理
Console.WriteLine("Database connection established."); // 不泄露敏感信息
//good:记录有限的错误信息,避免敏感信息泄露
try
{
// 假设这里有可能抛出异常的代码
throw new InvalidOperationException("Invalid operation detected");
}
catch (Exception ex)
{
Console.WriteLine($"Error occurred: {ex.GetType()} - operation could not be completed."); // 仅记录有限的非敏感错误信息
}
}
}