__init__.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # defusedxml
  2. #
  3. # Copyright (c) 2013 by Christian Heimes <christian@python.org>
  4. # Licensed to PSF under a Contributor Agreement.
  5. # See https://www.python.org/psf/license for licensing details.
  6. """Defuse XML bomb denial of service vulnerabilities
  7. """
  8. from __future__ import print_function, absolute_import
  9. from .common import (
  10. DefusedXmlException,
  11. DTDForbidden,
  12. EntitiesForbidden,
  13. ExternalReferenceForbidden,
  14. NotSupportedError,
  15. _apply_defusing,
  16. )
  17. def defuse_stdlib():
  18. """Monkey patch and defuse all stdlib packages
  19. :warning: The monkey patch is an EXPERIMETNAL feature.
  20. """
  21. defused = {}
  22. from . import cElementTree
  23. from . import ElementTree
  24. from . import minidom
  25. from . import pulldom
  26. from . import sax
  27. from . import expatbuilder
  28. from . import expatreader
  29. from . import xmlrpc
  30. xmlrpc.monkey_patch()
  31. defused[xmlrpc] = None
  32. for defused_mod in [
  33. cElementTree,
  34. ElementTree,
  35. minidom,
  36. pulldom,
  37. sax,
  38. expatbuilder,
  39. expatreader,
  40. ]:
  41. stdlib_mod = _apply_defusing(defused_mod)
  42. defused[defused_mod] = stdlib_mod
  43. return defused
  44. __version__ = "0.6.0"
  45. __all__ = [
  46. "DefusedXmlException",
  47. "DTDForbidden",
  48. "EntitiesForbidden",
  49. "ExternalReferenceForbidden",
  50. "NotSupportedError",
  51. ]