首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是受污染的对象,我们应该在什么时候清除它们?

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

Stack Overflow用户
提问于 2013-01-11 23:13:13
回答 1查看 5.4K关注 0票数 17

什么时候需要污染Ruby对象,什么时候我们应该消除它们的污染?污染对象的概念如何让Ruby脚本在安全模式下运行?有人能用一些代码片段来详细说明这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-11 23:33:47

受污染的是什么?

根据定义,用户输入是受污染的。例如:

代码语言:javascript
运行
复制
string = gets
string.tainted?
# => true

您还可以手动污染对象。

代码语言:javascript
运行
复制
string = 'Not yet tainted.'
string.tainted?
# => false

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

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

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

清除对象的污点

清除对象污染的最简单方法是对其调用Object#untaint方法。例如,如果字符串变量包含一个受污染的对象,则:

代码语言:javascript
运行
复制
(string = "Let's taint this string!").taint
string.untaint.tainted?
# => false

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

你可以在Locking Ruby in the Safe的“编程Ruby”一章中找到更多关于污染对象的信息。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14281004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档