例如,当最初输入数据时,如果它与我的验证正则表达式不匹配,我可能会将其吐回。然后到了使用它的时候,我经常会有做类似事情的冲动:
function useData(data) {
if(data.match(/some invalidating substring/) throw Error('Shouldn\'t have ever gotten past the orig. regex, but somehow it did, so its good that this extra layer of debugging info was integrated.');
// actually use the data.
}
我并不是真的在谈论安全性,因为那样你就想要进行深度防御。我所指的代码类型通常对安全性不敏感,我只是在尝试编写设计良好的代码,从而很有可能发现错误。从某种意义上说,还需要针对故障进行深度防御,我想不仅是漏洞,而且同时,Unix 哲学要求代码做一件事,而且只是做那件事,但是很好。考虑到这一点,不“信任”您的验证代码来完成其工作似乎是不好的做法,然后在某个地方的另一个函数中制作另一段验证代码,“以防万一”。让两段代码做一件事也不好。另一个缺点是,如果您更改验证模式,那么您可能会忘记在这两个地方都这样做。
反馈?