污点检验

✍ dations ◷ 2025-12-07 09:46:26 #计算机编程,静态程序分析

污点检验是某些程序语言所拥有的特性,例如Perl和Ruby,可用于增加安全性和避免恶意用户在主机上执行命令。污点会检验突出的安全风险,一般来说这些风险与那些使用SQL注入或缓冲区溢出攻击的网站相关。

污点检验的原理是任何变量(例如在网页表单区域的一个变量集)能够被外部用户修改,从而造成了潜在的安全危险。如果该变量被一个表达式赋值给第二个变量,那么第二变量也是可疑的。污点检验工具在变量间传递运行,直到外部输入潜在地影响到所有的变量。如果这些变量中任何一个变量被用于执行危险命令(例如对SQL数据库或主机操作系统的直接命令),污点检检验工具将警告该程序正在使用有潜在危险的污点变量。程序员可以通过重新设计程序来避免因危险的输入而导致的安全问题。

污点检验能够被视为一个无界面全面验证的保守近似或者是更一般化的安全信息流概念。因为系统中的信息流不能通过检验一个简单的执行追踪而被验证,污点分析的结果将必然地反映关于该系统信息流特征的近似信息。

以下危险的Perl代码在没有检验$name变量的值情况下,启动了一个大型SQL注入漏洞:

#!/usr/bin/perlmy $name = $cgi->param("name");  # Get the name from the browser...$dbh->TaintIn = 1;$dbh->execute("SELECT * FROM users WHERE name = '$name';"); # Execute a SQL query

如果开启污点检验,那么Perl将会拒绝运行命令,显示错误信息并退出,因为一个污点变量正在SQL查询中被使用。没有污点检验,用户能进入foo'; DROP TABLE users --,因此运行命令将删除全部的数据库表。更安全的方法是将$name的污点值编码到一个SQL字符串字面值和使用SQL查询的结果,这保证了没有嵌入在$name的危险命令会被执行。另一方法是使用预处理语句去净化所有变量输入。

需要注意的是Perl DBI需要设定数据库句柄的TaintIn属性,才允许污点模式去检验该SQL字符串。

Perl从至少1989年当T switch加入到Perl 3的时候开始支持污点化。

在1996年,网景同时在网景通讯服务器的服务器端JavaScript和客户端的网景浏览器3上实现数据污点化。然而,自从客户端支持被当作实验性功能,该功能被禁用(要求用户手动激活),而且需要页面作者修改脚本才能使用。而其他浏览器从未实现这个功能,通讯服务器也没有大体完成,微软后来成了新的互联网信息提供商。

相关

  • 放射性碘碘(I,原子量:126.90447(3))有37种已知同位素,其中只有碘-127是稳定同位素,其他都具有放射性,因此碘是一种单一同位素元素。天然存在的碘元素中含有两种同位素,主要为127I,以及痕量的1
  • 张启发张启发(1954年1月23日-),湖北公安人,汉族,中国农作物遗传学专家。1964年就读于荆州中学。1976年毕业于华中农学院。1985年获美国加利福尼亚大学戴维斯分校博士学位。华中农业大学
  • D-M174单倍群D-M174(英语:Haplogroup D-M174)又名D1(ISOGG 2019),是人类Y染色体DNA单倍群之一,源于单倍群D。单倍群D1于距今约6万年前首次出现于亚洲。其与单倍群E同样源于M168突变的基础
  • 关系规则学习关联规则学习(英语:Association rule learning)是一种在大型数据库中发现变量之间的有趣性关系的方法。它的目的是利用一些有趣性的量度来识别数据库中发现的强规则。 基于强
  • 格伦格伦县(Glenn County)是美国加利福尼亚州的一个县,县治威洛斯。根据美国人口调查局2000年统计,共有人口26,453,其中白人占71.78%、亚裔美国人占3.38%、印第安人占2.09%。坐标:39°
  • 埃德·马基爱德华·约翰·“埃德”·马基(英语:Edward John "Ed" Markey、1946年7月11日-),是一位美国民主党政治人物,自2005年成为马萨诸塞州联邦参议院议员。他在美国参议院的2013年特别选
  • '88〜Love Story《'88〜Love Story/Love Ya》是日本音乐组合B'z的吉他手松本孝弘于1991年9月25日发行的个人第一张单曲。'88〜Love StoryLove Ya
  • 沙纳瓦兹·布托沙纳瓦兹·布托(Shahnawaz Bhutto,1958年11月21日-1985年7月18日),前巴基斯坦总统佐勒菲卡尔·阿里·布托及努斯拉特·布托最小的儿子,1985年被发现死于其位于法国里维埃拉的公寓
  • 长谷川恒男长谷川恒男(日语:長谷川 恒男/はせがわ つねお 、1947年12月8日-1991年10月10日),日本登山家。
  • 新富町 (新竹市)新富町为新竹州新竹市自1935年实施町名改正所成立的行政区之一,位于现今新竹市北区。日治时期的町名在战后改为地籍划分,新竹市新富町大致位于地籍的民富段内。