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

2024-04-27

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


什么是污染?

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

string = gets
string.tainted?
# => true

您还可以手动污染对象。

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

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

为什么要清除对象?

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

清除对象的污染

取消对象污染的最简单方法是调用对象#untaint http://ruby-doc.org/core-1.9.3/Object.html#method-i-untaint方法就可以了。例如,如果您的string变量保存一个受污染的对象,然后:

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

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

您可以从以下位置找到有关受污染物体的更多信息将红宝石锁在保险箱中 http://ruby-doc.com/docs/ProgrammingRuby/html/taint.html的章节红宝石编程.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是受污染的对象,我们什么时候应该清除它们? 的相关文章

随机推荐

  • 从 std::list 中删除具有特定值的元素

    我需要从 std list 中删除具有特定值的元素 随着list
  • 使用 Deployment Manager 创建 Cloud Run 服务

    我正在尝试使用部署管理器创建 Cloud Run 服务 因为 Cloud Run 资源类型没有本机支持 我通过在以下位置提供其描述符来为 Cloud Run API 创建类型提供程序 https run googleapis com dis
  • BigInteger 乘以 Double

    我的物理老师给全班布置了一项艰巨的任务 我正在尝试创建一个程序来为我计算一些事情 在某个时刻 我需要将分子数量乘以百分比 Ulong 不能容纳大到 6022 10 19 的数字 所以我必须使用 net 4 0 中的 BigInteger 但
  • glypicon 上的单击事件

    如何将 ng click 事件添加到文本框中的引导字形图标 该事件不会被解雇 h3 How to clear the model on remove icon click h3 div class container div class f
  • 跨源资源共享中 this.withCredentials 属性的问题

    我们正在实现一个基于 AngularJS 的应用程序 该应用程序使用托管在不同域中的 REST Web 服务 以下脚本用于 CORS 它在 Chrome 和 FireFox 上完美运行 在 IE9 和 Safari 中进行身份验证时存在问题
  • 了解 Collection.isEmpty() 和 Collection.size() == 0 之间的区别? [复制]

    这个问题在这里已经有答案了 我读过很多关于两者之间差异的文章isEmpty and size gt 0 用于检查collection是否为空并发现isEmpty 表现超过size 但我无法轻易理解为什么性能isEmpty 即使 isEmpt
  • 主函数抱怨返回非 IO monad

    import Debug Trace main do trace Main function parses and returns 0 return 这会引发错误 app hs 3 1 Couldn t match expected typ
  • 如何在 Docker 容器中运行 Nginx 而不停止?

    我在 Docker 容器上安装了 Nginx 并尝试像这样运行它 docker run i t p 80 80 mydockerimage usr sbin nginx 问题是 Nginx 的工作方式是 初始进程立即生成一个 Nginx 主
  • 使用 wp_read_audio_metadata()

    我正在尝试从 WordPress 中的 mp3 文件获取一些元数据 特别是长度变量 这是我的一些代码 这里没有显示 但我已经包含了 wp admin includes media php 文件 当我查看我的页面时http beta open
  • 如何从函数调用事件处理程序?

    我有一个类 我从中调用一个函数ABC string st 带字符串参数 该函数定义在一个Form class Form1 我有一个列表视图 想要从函数中自动调用列表视图 mouse click 事件 我该如何做到这一点 您不能调用另一个类的
  • python lxml 我如何在项目名称中使用标签?

    我需要使用项目的特殊名称构建 xml 文件 这是我当前的代码 from lxml import etree import lxml from lxml builder import E wp E wp tmp wp title print
  • Array.filter 与 $filter('filter')

    我应该在 Angular 应用程序中使用哪一个 为什么 array filter o gt o name myName or filter filter array name myName true 关键的区别是快捷方式或语法糖由提供 fi
  • 如何将 VBScript 转换为可执行 (EXE) 文件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我四处寻找转换 VBScript 的信息 vbs 到可执行文件 并意识到大多数可用的工具实际上是将脚本包装在可执行文件中 尝试了一些工
  • 包含多个双引号的 CSV 拆分正则表达式

    我有一个包含文本的 CSV 列数据 每行用双引号分隔 一行中的示例文本类似于此 notice 新行和每行之前的空格是故意的 Lorem ipsum dolor sit amet consectetur adipisicing elit se
  • 我可以在 python 中获得没有 echo 的控制台输入吗?

    我可以在 python 中获取没有 echo 的控制台输入吗 Use getpass http docs python org library getpass html gt gt gt from getpass import getpas
  • Primefaces 中的过滤数据表仅有效一次

    我正在尝试使用 Primefaces 过滤数据表 就像这个例子 http www primefaces org showcase ui datatableFiltering jsf 在网络浏览器中 我输入要过滤的文本 它会工作一次 但是当我
  • Python Asyncio 子进程永远不会完成

    我有一个简单的 python 程序 我用它来测试带有子进程的 asyncio import sys time for x in range 100 print processing s 100 x sys stdout flush prin
  • cmd的字符集

    C Users Kolink gt php r echo C Users Kolink gt echo 正如你所看到的 一个程序输出一个 结果是 但使用echo命令给出所需的字符 并且 我可以配置 PHP 也许是脚本开头的某个命令 来输出正
  • 需要新版本后 Firebase 参考为空

    The new 文档 https firebase google com docs database server start authenticate with admin privileges提供了一种初始化 firebase 的简单方
  • 什么是受污染的对象,我们什么时候应该清除它们?

    什么时候需要对 Ruby 对象进行污染 什么时候应该消除它们的污染 受污染对象的概念如何使 Ruby 脚本在安全模式下运行 任何人都可以详细说明这一点 通过一些代码片段使概念清晰吗 什么是污染 根据定义 用户输入被污染了 例如 string