污点检验

✍ dations ◷ 2025-12-08 06:30:06 #计算机编程,静态程序分析

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

相关

  • 班夫国家公园班芙国家公园(英语:Banff National Park,法语:Le Parc national Banff)建于1885年,是加拿大历史最悠久的国家公园。它坐落于落基山脉北段,距加拿大阿尔伯塔省卡尔加里以西约110-180
  • 硒半胱氨酸硒半胱氨酸(Selenocysteine;简称:Sec 或 U;其它出版刊物亦简称为:Se-Cys))是一种氨基酸,存在于少数一些酶中,如谷胱甘肽过氧化酶、甲状腺素5'-脱碘酶、硫氧还蛋白还原酶、甲酸脱氢酶
  • 北塞浦路斯议会共和国议会(土耳其语:Cumhuriyet Meclisi)是北塞浦路斯的国家立法机关。共和国议会实行一院制,由50名议员组成。议会任期4年。现任议长是锡贝尔·赛伯。政府 (30)反对派 (20)
  • 亚欧大陆欧亚大陆或亚欧大陆是亚细亚洲大陆和欧罗巴洲大陆的合称。面积5473.8万平方公里。亚、欧二大陆单从地理学方面来归类应属同一个、地球表面面积最大的洲。亚洲与欧洲的分别主
  • 异狄氏剂(1aR,2S,2aS,3S,6R,6aR,7R,7aS)-3,4,5,6,9,9-hexachloro-1a,2,2a,3,6,6a,7,7a-octahydro-2,7:3,6-dimethanonaphthooxirene异狄氏剂(英语:Endrin)也称为安特灵,是一种有机氯化合
  • 曾文溪曾文溪位于台湾南部,是全台湾第四长的河流,属于中央管河川。曾文溪发源于嘉义县阿里山乡的东水山。流经台南市楠西区、玉井区、大内区、山上区、善化区、官田区、麻豆区、安定
  • 入侵希腊法西斯意大利希腊王国希腊反攻势意大利春季攻势(英语:Italian Spring Offensive)希意战争(希腊语:Ελληνοϊταλικός Πόλεμος或Πόλεμος του Σαρ
  • 形态分析法形态分析法(Morphological analysis)指数种根据形态学进行分析的方法,其方法随各领域对形态学的定义而异:
  • 瓦图曼德里区瓦图曼德里区(马达加斯加语:Vatomandry),是马达加斯加的行政区,位于该国东部,由阿齐那那那区负责管辖,首府设于瓦图曼德里,面积2,620平方公里,2011年人口132,565,人口密度每平方公里51
  • 谢泽谢泽(?-1449年),字时用,浙江绍兴府会稽县人,祖籍上虞。明朝官员。谢泽因入赘会稽张氏,定居于窦姜村。永乐十六年(1418年)考中戊戌科进士,授刑部主事,升郎中。户部侍郎周忱管理东南运赋,推