我知道将不受信任的对象标记为污染的可能性,但是根本目的是什么以及我为什么要这样做?
答案 0 :(得分:7)
为了确保不受信任的数据不会被错误地用于计算,交易或解释为代码,一个人会将污点视为安全预防措施。
通过内置语言功能跟踪污点比通过编码惯例跟踪或依赖代码审查更清晰,更可靠。
例如,用户的输入通常可被视为“不可信”,直到它已正确清理以插入数据库。通过将输入标记为污染,Ruby可确保发生令人满意的卫生并防止潜在的SQL注入攻击。
对于一个“古代”(2005)编码实践的例子,该实践演示了如何在没有Perl和Ruby模块的情况下跟踪污点,请阅读一些好老的Joel:
答案 1 :(得分:6)
在Perl中编写CGI时,它曾经是一种非常标准的做法。 There is even a FAQ on it.基本的想法是,运行时间可以保证您不会隐含地信任一个受污染的值。