如何预防;亿笑",;Python中的DoS攻击&x27;什么是xlrd?
通过简单地阻止XML文件中的实体被扩展,DoS攻击似乎是可以预防的。在Python的xlrd库中是否有这样做的方法(即某种标志)?如果没有,是否有建议的方法来避免攻击?不使用xlrd本身 目前,xlrd中没有防止任何XML炸弹的选项。在中,xlsx数据被传递到python的内置如何预防;亿笑",;Python中的DoS攻击&x27;什么是xlrd?,python,xml,xlsx,xlrd,client-side-attacks,Python,Xml,Xlsx,Xlrd,Client Side Attacks,通过简单地阻止XML文件中的实体被扩展,DoS攻击似乎是可以预防的。在Python的xlrd库中是否有这样做的方法(即某种标志)?如果没有,是否有建议的方法来避免攻击?不使用xlrd本身 目前,xlrd中没有防止任何XML炸弹的选项。在中,xlsx数据被传递到python的内置xml.etree进行解析,无需任何验证: import xml.etree.ElementTree as ET def process_stream(self, stream, heading=None):
xml.etree
进行解析,无需任何验证:
import xml.etree.ElementTree as ET
def process_stream(self, stream, heading=None):
if self.verbosity >= 2 and heading is not None:
fprintf(self.logfile, "\n=== %s ===\n", heading)
self.tree = ET.parse(stream)
但是,可以使用defusedxml修补ElementTree
如评论中所述,是一个直接针对针对不同类型XML炸弹的安全问题的包。从文档中:
而不是:
from xml.etree.ElementTree import parse
et = parse(xmlfile)
将代码更改为:
from defusedxml.ElementTree import parse
et = parse(xmlfile)
它还提供了修补标准库的功能。因为这就是xlrd所使用的,所以您可以结合使用xlrd和defusedxml来读取Excel文件,同时保护自己免受XML炸弹的攻击
此外,该软件包还具有一个未经测试的功能,可以使用defusedxml.defuse_stdlib()对所有stdlib模块进行猴补丁
我还没有尝试过,但是如果尝试用xlrd加载示例XML文件(来自wikipedia文章中的),会发生什么?它能处理吗?@Legostrmtroppr它会停滞很长很长时间。我并没有一直等待,但我希望它最终会导致溢出。我尝试使用defusedxml,但它根本不处理xml炸弹。也许我没有很好地使用它,但我测试了它的基本功能,它只阻止了包含实体、DTD等的xml。还有另一个名为defusedexpat的python包,它倾向于处理xml炸弹,但不幸的是也没有很好地工作。