评论者:rickmoynihan
感谢提升我的权限,亚历克斯。
我并非有意过度干预布丁的制成,但也许最终还是那样做了!:-)
我的推理是,如果你使用传感器来对用户输入采集的值进行映射/归约,那么攻击者可能会使循环比预期早中断;这可能会产生其他后果。我没有具体的攻击向量在心头,但我也见过 ::halt 原子,并想象用户可能会将 "clojure.core/halt" 注入到 HTTP 头部。如果 ring 有关键字化键的中间件,那么你有用户注入的传感器注入的原子值作为哨兵值,而这个哨兵值随后可能会被用来绕过其他字段的验证/编码/转义等。
然而,我更仔细地看了看 {{halt-when}} 的实现以及其他传感器,看起来键从未与用户数据混合;并且 ::none 由某些传感器函数用来表示第一次遍历。所以,看来我犯了错误。现在我不太确定这个是否有解决的必要。