污点检验

✍ dations ◷ 2025-11-25 08:18:54 #计算机编程,静态程序分析

污点检验是某些程序语言所拥有的特性,例如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上实现数据污点化。然而,自从客户端支持被当作实验性功能,该功能被禁用(要求用户手动激活),而且需要页面作者修改脚本才能使用。而其他浏览器从未实现这个功能,通讯服务器也没有大体完成,微软后来成了新的互联网信息提供商。

相关

  • 脊椎关节病变脊椎关节病变(英语:spondyloarthropathy,缩写为 SpA)泛指任何影响脊椎关节的关节病变,它是一大类疾病的集合总称,而非单一个特定疾病。脊椎病变则是脊椎骨本身的问题,两者并不相同
  • 圣马丁修道院图尔的圣马丁(圣公会译圣马田,图尔主教)(拉丁文:Sanctus Martinus Turonensis,316年-397年11月11日),4世纪基督教著名圣人。关于他的一个传说是割袍赠予化身为乞丐的耶稣。马丁生于匈
  • 快速动眼期快速动眼期(Rapid Eye Movement,REM)是动物睡眠的一个阶段,又称快速动眼睡眠。在此阶段时眼球会快速移动,同时身体肌肉放松。快速眼动睡眠也被称作异相睡眠(paradoxical sleep, PS
  • ɯ̞次闭后不圆唇元音是一种元音。在声学上,更准确的称呼应为次闭次后不圆唇元音。国际音标写作⟨ɯ̞⟩(较低(英语:Relative articulation)的)或⟨ɤ̝⟩(较高(英语:Relative articulati
  • 分子对称性分子对称性描述分子的对称性表现并根据分子的对称性对分子作分类。分子对称性在化学中是一项基础概念,因为它可以预测或解释许多分子的化学性质,例如分子振动、分子的偶极矩和
  • 始暴龙属始暴龙属(属名:,意为“黎明暴君”,即“早期暴龙”)是暴龙超科下的一属恐龙,化石从英国怀特岛郡的韦尔登群的威塞克斯组发现,年代为下白垩纪。它的化石(编号MIWG1997.550)包括了幼体及
  • 外海街道外海街道是中国广东省江门市江海区下辖的一个街道,总面积47平方公里,人口4.5万。下辖6社区12村外海话,是外海的方言,以前又称龙溪话。虽与江门话、新会话同属四邑方言,但外海话与
  • 亚历山大·古登威泽尔亚历山大·古登威泽尔(Александр Александрович Гольденвейзер,1880年1月29日-1940年7月4日),俄国出生的美国人类学家和社会学家。
  • 大苏山大苏山地理坐标位于河南省信阳市光山县西南22公里,东经113°54′30″—113°59′40″,北纬31°50′13″- 31°53′02″,于2015年1月被中国林业局正式批准设立为“大苏山国家森
  • 叠码仔叠码仔是澳门博彩业中一种特有职业,其发展与澳门历史及当地黑帮有着千丝万缕的关系,规范化后称为博彩中介人合作者。至今有些叠码仔仍会从事洗黑钱及非法借贷等业务。叠码仔约