假设您有以下过滤器链:
过滤器 1 ====> 过滤器 2 ====> 过滤器 3 ====> 我们的自定义过滤器 ====> 过滤器 4 ====> 过滤器 5
<====过滤器1<====过滤器2 <====我们的自定义过滤器<====过滤器3<====过滤器4 <====过滤器5
我们正在注入定制的数据结构^
问题是我们在执行“查看源代码”时在 Web 浏览器中看不到注入的数据。
所以对我们来说很明显,过滤器 1 或 2 正在删除注入的数据。实际上有更多的过滤器(可能有 30 个或更多)。我们正在尝试确定哪个过滤器是删除我们注入的数据的罪魁祸首过滤器。
有没有办法将数据写入无法修改的 HttpServletResponse,如果尝试修改,Java 中会抛出异常?这样,它会立即揭露罪魁祸首。
当您尝试确定代码何时尝试访问已释放的对象时,就像在 Objective-C 中启用僵尸一样。
更多细节(如果您有兴趣):
我们注入到 httpservletresponse 的数据结构是一个被“脚本”标签包围的 JSON 数据结构,因为我们使用 jQuery 来解析它以获得一堆与用户界面相关的东西。
有趣的是,如果我们尝试注入像“hello stackoverflow”这样的随机字符串,我们可以在 Web 浏览器中执行“查看源代码”时看到这个字符串。所以我们的预感是,任何过滤器都在剥离我们的结构,很可能是在寻找恶意脚本并将我们的东西拉出来。