污点检验

✍ dations ◷ 2025-12-01 10:01:36 #计算机编程,静态程序分析

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

相关

  • 亚变种在植物分类学中,变种(拉丁文:varietas,简称写做 var.)为一种分类级别,位于种与亚种之下、变型(英语:Form (botany))之上;作为种下分类群,生物学名会采用三名法。有一种枕形仙人掌“Esco
  • 幼发拉底河幼发拉底河(英语:Euphrates,阿拉伯语:الفرات / al-Frat‎,土耳其语:Fırat)是中东名河,与位于其东面的底格里斯河共同界定美索不达米亚,被认为是文明的起源地之一,对中东地区尤
  • 文永‧弘安之役元日战争是元朝皇帝忽必烈与属国高丽在1274年和1281年两次派军侵略日本而引发的战争;这两次侵略在日本合称“元寇”或“蒙古襲来”,或依当时的日本年号称抵御元军第一次进攻的
  • 切线切线(英语:tangent line),为一几何名词,应用于曲线及平面圆时意义有所不同。设L为一条曲线,A, B为此曲线上的点,过此二点作曲线的割线,令B趋向A,如果割线的极限存在,则称此极限(一条直
  • 翡翠海岸翡翠海岸(意大利语:Costa Smeralda)是意大利撒丁岛东北部的一处豪华海滨休闲度假区,长约20公里,行政上属于市镇阿尔扎凯纳。该地拥有白色的沙滩,高尔夫俱乐部,私人游艇和豪华酒店,吸
  • 闽北花猪闽北花猪是福建省北部山区的地方猪种之一。闽北花猪中心产区在三明市沙县夏茂镇、南平市顺昌县洋口镇、南平市延平区王台镇等地。目前,闽北花猪仅在顺昌县仍有饲养。闽北花猪
  • 克里斯托弗·希尔克里斯托弗·希尔可能指以下人物:
  • 冯志刚冯志刚(1969年2月27日-2011年7月7日),是已故中国职业足球运动员,曾入选中国国家队,退役后曾在武汉队、陕西中新等俱乐部任职。冯志刚是徐根宝率领的国二队和国奥队的主力后卫,帮助
  • 死囚上路《死囚上路》(英语:)是一部1995年首映的美国剧情片,由蒂姆·罗宾斯执导,苏珊·莎兰登及西恩·潘等主演。电影以死刑为主题,基于修女海伦·培贞同名书改编,原书描写的是真实事件。电
  • 男性贬抑厌男主义或男性贬抑(misandry),又称厌男症,是种对男性的仇恨或者强烈偏见。与性别歧视或女性贬抑(对女人的厌恶)相比,男性贬抑通常是指女性针对男性的贬抑厌恶,男性也可能有贬抑男性