gpt4 book ai didi

ruby - 什么是受污染的对象,我们什么时候应该清除它们?

转载 作者:数据小太阳 更新时间:2023-10-29 06:36:51 24 4
gpt4 key购买 nike

Ruby 对象什么时候需要被污染,什么时候应该取消污染?受污染对象的概念如何使 Ruby 脚本在安全模式下运行?任何人都可以详细说明这一点以通过一些代码片段使概念清晰吗?

最佳答案

什么是污染?

根据定义,用户输入被污染了。例如:

string = gets
string.tainted?
# => true

您还可以手动污染对象。

string = 'Not yet tainted.'
string.tainted?
# => false

(string = 'Explicitly taint me!').taint
string.tainted?
# => true

为什么要清除对象的污点?

通常,只有在验证和/或清理对象后,您才会清除对象的污染。对于您不想在不受信任的字符串或其他对象上运行的某些操作,或者当您的安全级别需要未受污染的对象来执行所需的操作时,取消污染对象会将其标记为“安全”。

清除对象

清除对象最简单的方法是调用 Object#untaint方法就可以了。例如,如果您的 string 变量包含一个受污染的对象,那么:

(string = "Let's taint this string!").taint
string.untaint.tainted?
# => false

关于受污染对象的更多信息

您可以从 Locking Ruby in the Safe 中找到有关受污染对象的更多信息Ruby 编程一章。

关于ruby - 什么是受污染的对象,我们什么时候应该清除它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14281004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com