什么是受污染的物体,什么时候应该解开它们?
什么时候Ruby对象需要被污染,什么时候应该解开它们? 受污染对象的概念如何使Ruby脚本以安全模式运行? 任何人都可以详细说明这一点,以便用一些代码片段清楚地理解这个概念吗?
什么是污点?
根据定义,用户输入受到污染。 例如:
string = gets string.tainted? # => true
您也可以手动污染对象。
string = 'Not yet tainted.' string.tainted? # => false (string = 'Explicitly taint me!').taint string.tainted? # => true
为什么要打开一个物体?
通常,只有在validation和/或清理对象后才能对对象进行解开。 对于某些您不希望在不受信任的字符串或其他对象上运行的操作,或者当您的安全级别需要未受污染的对象来执行所需的操作时,取消对象会将其标记为“安全”。
取消对象
解开对象的最简单方法是在其上调用Object#untaint方法。 例如,如果您的字符串变量包含受污染的对象,则:
(string = "Let's taint this string!").taint string.untaint.tainted? # => false
更多关于污染物体
您可以在Ruby 编程 的安全章节中找到有关受污染Ruby的更多信息。