检查输入、兼容性与严格性

发布于 2024-11-02 04:26:54 字数 213 浏览 0 评论 0原文

当解析和验证输入时,两条指令相互矛盾。

  1. 检查一切以确保安全。不要让垃圾进来,因为这可能会导致谁知道什么会被扔出去。

  2. 对接受输入要宽容(但对产生输出要严格),否则就会造成不必要的不​​兼容性。

什么原则决定应用哪条规则?我最好的猜测是,(1) 适用于您正在验证将在其他地方传递的数据的情况。还有其他考虑吗?

When parsing and validating input, two dicta are in tension with each other.

  1. Check everything for safety. Don't allow garbage in, because it can lead to who knows what out.

  2. Be permissive about accepting input (but strict about producing output), because otherwise you are creating unnecessary incompatibilities.

What principle decides which rule to apply? My best guess is that (1) applies to cases where you are validating data that will be passed on elsewhere. Is there any other consideration?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苦笑流年记忆 2024-11-09 04:26:54

我想说#1更多地应用于输入的内容(它真的是一个人的名字,还是一个DROP TABLE命令?),而#2更多地应用于输入的格式(几乎有效的XML - - 我们知道你的意思,所以我们会接受)。

我还认为,#2 实现的各种情况(接受较差的 HTML 或 XML;允许 javascript 没有分号作为行结尾)已被证明是错误。

I'd say that #1 applies more to the content of the input (is it really a person's name, or is it a DROP TABLE command?), while #2 applies more to the format of the input (almost-valid XML -- we know what you mean, so we'll accept it).

I also think that various situations in which #2 was implemented (accepting poor HTML or XML; allowing javascript without semicolons for line endings) have proved to be mistakes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文