由:rickmoynihan发表的评论
感谢你提升我的权限,亚历克斯。
我并不是有意过度篡改布丁,但我可能真的那么做了!:-)
我的推理是,如果你使用转换器来映射/归约从用户输入获取的值,那么攻击者可能会提前终止循环;这可能会带来其他后果。我并没有具体的攻击向量,但我看到有`::halt`这个哨兵值,并且想象用户可能可以将"clojure.core/halt"注入到HTTP头部。如果ring有一个将关键字化的中间件,那么用户注入的哨兵值可能会导致转换器短路验证/编码/转义等其他字段的验证/编码/转义等。
然而,我稍微研究了一下 {{halt-when}} 和其他转换器的实现,似乎关键字永远不会与用户数据混合;并且 ::none 用于表示某些转换器函数的第一遍扫描。所以看来我弄错了。我现在怀疑这值得解决。