- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
<!DOCTYPE root [
<!ENTITY ha "Ha !">
<!ENTITY ha2 "&ha; &ha;">
<!ENTITY ha3 "&ha2; &ha2;">
<!ENTITY ha4 "&ha3; &ha3;">
<!ENTITY ha5 "&ha4; &ha4;">
...
<!ENTITY ha128 "&ha127; &ha127;">
]>
<root>&ha128;</root>
据说这被称为十亿笑声 DoS 攻击。
有人知道它是如何工作的吗?
最佳答案
Billion Laughs 攻击是一种针对 XML 解析器的拒绝服务攻击。 Billion Laughs 攻击也称为 XML 炸弹,或更深奥地称为指数实体扩展攻击。即使使用格式正确的 XML 也可能会发生 Billion Laughs 攻击,并且还可以通过 XML 模式验证。
普通的 Billion Laughs 攻击在下面的 XML 文件中进行了说明。
<?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>
在这个例子中,有 10 个不同的 XML 实体,lol
– lol9
。第一个实体 lol
被定义为字符串 “lol”
。但是,每个其他实体都定义为另一个实体的 10 个。此 XML 文件的文档内容部分仅包含对实体 lol9
的一个实例的引用。但是这个在被DOM或者SAX解析器解析的时候,遇到lol9
的时候,会展开成10个lol8
,每一个展开成10个lol7
s,等等等等。当所有内容都展开为文本 lol
时,字符串 "lol"
有 100,000,000 个实例。如果还有一个实体,或者 lol
被定义为 10 个 “lol”
字符串,就会有十亿个“lol”,攻击的名称由此而来。不用说,如此多的扩展会消耗指数级的资源和时间,从而导致 DOS。
我的 blog 上有更详尽的解释.
关于xml - billion laughs XML DoS 攻击是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3451203/
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.
我是一名优秀的程序员,十分优秀!