评论由:rickmoynihan
感谢提高我的权限,亚历克斯。
我并不想做得太多,但我可能最终还是那样做了!:-)
我的推理是,如果你使用传输器来映射/汇总从用户输入中获取的值,那么攻击者可能会使循环比预期提前终止;这可能会导致其他后果。我心中并没有具体的攻击向量,但我也看到了::halt守卫,并想象一个用户可能将"clojure.core/halt"注入到HTTP头中。如果ring有一个将键关键字化的中间件,那么你就有用户注入的用于传输器的守卫值,而这个守卫值可能会被用来绕过其他字段的验证/编码/转义等操作。
然而,我对{{halt-when}}和其他传输器的实现进行了一些研究,似乎关键字永远不会与用户数据混合;并且::none被某些传输器函数用来表示第一次遍历。所以我可能弄错了。我现在怀疑这值得解决。