【发布时间】:2019-12-14 23:40:51
【问题描述】:
我的代码可以从 3 个字符串创建 3 个文件并将其压缩到存档中,例如:
private static async Task<byte[]> CreateArchive(CertificateCredentials certificate)
{
using (var ms = new MemoryStream())
{
using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, false))
{
await Add(archive, "certificate.der", certificate.CertificateContent);
await Add(archive, "issuing_ca.der", certificate.IssuingCACertificateContent);
await Add(archive, "private_key.der", certificate.PrivateKeyContent);
}
return ms.ToArray();
async Task Add(ZipArchive zipArchive, string filename, string content)
{
ZipArchiveEntry zipEntry = zipArchive.CreateEntry(filename);
using (var originalFileStream = new MemoryStream(Convert.FromBase64String(content)))
using (Stream zipEntryStream = zipEntry.Open())
{
await originalFileStream.CopyToAsync(zipEntryStream);
}
}
}
}
在 SonarQube 报告中,我在这一行得到了关键安全热点
using (Stream zipEntryStream = zipEntry.Open())
带有消息:
确保解压此存档文件是安全的
https://rules.sonarsource.com/csharp?search=Expanding%20archive%20files%20is%20security-sensitive
我该如何解决这个问题?它对我来说看起来很安全。
提前谢谢你
【问题讨论】:
-
您是否检查了规则详细信息中的“问自己是否”部分?
-
@JeroenHeier 是的,有什么问题吗?
-
那么你会发现自己没有风险。您可以将此问题标记为误报,并且您已准备好。 SonarQube 正在尽最大努力检测没有太多误报的问题。
-
@JeroenHeier 对不起,我不明白你的意思。它如何帮助我修复警告?