zoukankan      html  css  js  c++  java
  • 微信支付回调,XXE攻击漏洞防止方法

    最近微信支付回调发现的XXE攻击漏洞(什么是XXE攻击,度娘、bing去搜,一搜一大把),收到通知后即检查代码,

    微信给的解决方法是如果你使用的是:

    XmlDocument:

    XmlDocument xd = new XmlDocument
    {
         XmlResolver = null,
    };

    我们做微信支付没有使用他们的SDK,底层解析XML没有使用XmlDocument,用的是序列化XmlSerializer.Deserialize

    XmlSerializer:

    1)、如果你使用的是Stream、TextReader通过源码可以得知,已禁用XmlResolver

    /// <include file='docXmlSerializer.uex' path='docs/doc[@for="XmlSerializer.Deserialize"]/*' />
    /// <devdoc>
    ///    <para>[To be supplied.]</para>
    /// </devdoc>
    public object Deserialize(Stream stream) {
          XmlTextReader xmlReader = new XmlTextReader(stream);
          xmlReader.WhitespaceHandling = WhitespaceHandling.Significant;
          xmlReader.Normalization = true;
          xmlReader.XmlResolver = null;
          return Deserialize(xmlReader, null);
    }
            
    /// <include file='docXmlSerializer.uex' path='docs/doc[@for="XmlSerializer.Deserialize1"]/*' />
    /// <devdoc>
    ///    <para>[To be supplied.]</para>
    /// </devdoc>
    public object Deserialize(TextReader textReader) {
          XmlTextReader xmlReader = new XmlTextReader(textReader);
          xmlReader.WhitespaceHandling = WhitespaceHandling.Significant;
          xmlReader.Normalization = true;
          xmlReader.XmlResolver = null;
          return Deserialize(xmlReader, null);
    }

    2)、如果你使用的是XmlReader,那么需要Setting一下

    using (XmlReader xr = XmlReader.Create(s, new XmlReaderSettings()
    {
          XmlResolver = null,
    }))
    {
          XmlSerializer xs = new XmlSerializer(typeof(T));
          return xs.Deserialize(xr) as T;
    }

    这里可以防止实体注入,另外如果想要更加安全一点的去禁用一部分Uri外部引用,过滤安全的链接,那么

    根据上图可以重写XmlResolver

    3)、使用其他lib包的,我也不知道了,囧...

    更加简单的做法就是过滤关键字,如果包含则直接丢弃之

  • 相关阅读:
    生成一个四位数的随机验证码
    计算阶乘
    四种排序(冒泡、插入、递归、选择)
    Java基础面试被常问到知识点
    Qt中的坐标系统
    a message box to confirm the action
    点击按钮退出窗口
    为部件提供浮动提示信息
    在窗口标题栏的左上方显示图标
    PyQt5显示一个空白的窗口
  • 原文地址:https://www.cnblogs.com/Little-Wang/p/9273283.html
Copyright © 2011-2022 走看看