【问题标题】:Prevent XML DoS attack in ASP.NET webmethod在 ASP.NET webmethod 中防止 XML DoS 攻击
【发布时间】:2011-12-19 10:17:10
【问题描述】:

我有以下网络方法(ASP.NET,c# 4.0):

[WebMethod]
public XmlDocument NewQuote(string username, string password, XmlDocument xml)
{
   // process request
}

我想知道如何防止 XML DoS 攻击(十亿笑声、外部实体等),因为 XmlDocument 被接受为参数?我在哪里以及如何禁止 DTD 处理?在 web 方法的 body 中显然为时已晚。

谢谢!

【问题讨论】:

  • 这实际上是一个非常好的问题。我相信正确的答案是“不接受来自未经授权用户的 XML”,但我怀疑这就是你要找的 :)

标签: asp.net web-services c#-4.0 denial-of-service


【解决方案1】:

提出一个逻辑,即用户只能上传 x 个文件或调用该服务 x 次。

【讨论】:

  • 不会。一个 10-15 行的 XML 文件甚至可以杀死最快的服务器
  • @Stilgar 假设您的意思是“正确保护的服务器”,您是否有支持该声明的示例?
  • 用字符串而不是 XmlDocument 调用方法怎么样。然后如果它是有效的(正确的用户名/密码,仍然低于阈值)然后尝试将其转换为 XmlDocument?
  • 然后你可以用 XSD 验证它
  • 是的,我愿意。保存你所有的工作(说真的!)。打开您的 Visual Studio 并创建新的 XML 文档(VS 使用 .NET Load 方法创建一个 XmlDocument 对象以供编辑器使用)并将 XML 粘贴到本文末尾sietch.net/ViewNewsItem.aspx?NewsItemID=173(我之所以链接只是因为我不能在评论中粘贴格式化的 XML)。问题的原因是 .NET 框架默认尝试扩展实体引用(可能是为了提供丰富的功能)。您可能需要重新启动计算机。您可以在加载 XML 的简单控制台应用程序中重现这一点
猜你喜欢
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
相关资源
最近更新 更多