diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2012-09-29 16:27:29 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2012-09-29 16:27:29 -0700 |
commit | 5ceb75f6632a70c564b4556500b9c3e5a98bfa73 (patch) | |
tree | f00bc6d1d47a6ea8aa655a79a8ca2eb0760d50a8 /src/DotNetOpenAuth.OpenId | |
parent | cdd3e95f4eac8076ffd78641bf4cf61d4422572a (diff) | |
download | DotNetOpenAuth-5ceb75f6632a70c564b4556500b9c3e5a98bfa73.zip DotNetOpenAuth-5ceb75f6632a70c564b4556500b9c3e5a98bfa73.tar.gz DotNetOpenAuth-5ceb75f6632a70c564b4556500b9c3e5a98bfa73.tar.bz2 |
Mitigates the XML DTD DoS attack from expanding entities.
Fixes #209
Diffstat (limited to 'src/DotNetOpenAuth.OpenId')
-rw-r--r-- | src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs | 3 | ||||
-rw-r--r-- | src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs b/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs index 8265c75..3189a5d 100644 --- a/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs +++ b/src/DotNetOpenAuth.OpenId/OpenId/XriDiscoveryProxyService.cs @@ -77,7 +77,8 @@ namespace DotNetOpenAuth.OpenId { Contract.Ensures(Contract.Result<XrdsDocument>() != null); XrdsDocument doc; using (var xrdsResponse = Yadis.Request(requestHandler, GetXrdsUrl(identifier), identifier.IsDiscoverySecureEndToEnd)) { - doc = new XrdsDocument(XmlReader.Create(xrdsResponse.ResponseStream)); + var readerSettings = MessagingUtilities.CreateUntrustedXmlReaderSettings(); + doc = new XrdsDocument(XmlReader.Create(xrdsResponse.ResponseStream, readerSettings)); } ErrorUtilities.VerifyProtocol(doc.IsXrdResolutionSuccessful, OpenIdStrings.XriResolutionFailed); return doc; diff --git a/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs b/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs index f71ad46..a23e019 100644 --- a/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs +++ b/src/DotNetOpenAuth.OpenId/Yadis/Yadis.cs @@ -190,7 +190,8 @@ namespace DotNetOpenAuth.Yadis { if (response.ContentType.MediaType == ContentTypes.Xml) { // This COULD be an XRDS document with an imprecise content-type. response.ResponseStream.Seek(0, SeekOrigin.Begin); - XmlReader reader = XmlReader.Create(response.ResponseStream); + var readerSettings = MessagingUtilities.CreateUntrustedXmlReaderSettings(); + XmlReader reader = XmlReader.Create(response.ResponseStream, readerSettings); while (reader.Read() && reader.NodeType != XmlNodeType.Element) { // intentionally blank } |