污点检验

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

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

相关

  • 血管性水肿血管神经性水肿是真皮、皮下组织(英语:subcutaneous tissue)、黏膜的局部肿胀。可发生于面部、舌头、喉、腹部、四肢。常与荨麻疹相关,荨麻疹是皮肤的红肿。 Onset is typically
  • 国家基本药物目录基本药物是适应基本医疗卫生需求,剂型适宜,价格合理,能够保障供应,公众可公平获得的药品。中华人民共和国国家基本药物目录是各级医疗卫生机构配备使用药品的依据。目录中的药品
  • 麻腮风三联疫苗不会导致自闭症麻腮风三联疫苗 (MMR Vaccine),是给幼儿接种以预防麻疹、腮腺炎、风疹的疫苗。1998年以来,人们就接种这种疫苗会不会导致儿童自闭症等疾病产生了接种疫苗争议。2010年2月英国
  • 低温保存深低温保存或超低温保存(英语: cryopreservation),指将生物、生命组织、或细胞等有机物质和其他物质在摄氏零下196度或以下的低温保存的一种科技。一般来说,深低温保存是泛指
  • Cavalier-Smith汤玛斯·卡弗利尔-史密斯(Thomas Cavalier-Smith,1942年10月21日-)是一位英国演化生物学家及牛津大学动物学系教授。发表过许多原生生物的分类研究,主要贡献在于提出六大界来区分
  • 麦莉·赛勒斯麦莉·雷·赛勒斯(Miley Ray Cyrus),出生名德斯蒂尼·霍普·赛勒斯(Destiny Hope Cyrus),是一名美国歌手、词曲作家及演员。童年期间,她曾在电视连续剧《Doc(英语:Doc (2001 TV serie
  • 埃德蒙·C·林奇埃德蒙·卡尔弗特·林奇(英语:Edmund Calvert Lynch,1885年5月19日-1938年5月12日)和他的朋友查尔斯·E·美林于1915年10月15日成立了美林证券(Merrill Lynch)。埃德蒙·林奇1885年
  • 瓦基弗银行女排俱乐部瓦基弗银行女排俱乐部(英语:VakıfBank Sports Club),是一间位于土耳其伊斯坦布尔的女排俱乐部,成立于1986年,曾三次(2013年、2017年及2018年)夺得世界女排俱乐部锦标赛冠军和四度(20
  • 额我略六世教宗额我略六世(拉丁语:Gregorius PP. VI;?-1048年)本名若望·格拉齐亚诺(Giovanni Graziano),于罗马出生,1045年5月1日至1046年12月20日岀任教宗。担任教宗前他原先是拉丁门前圣若望
  • 斯坦尼斯拉夫·彼得罗夫斯坦尼斯拉夫·叶夫格拉福维奇·彼得罗夫(俄语:Станисла́в Евгра́фович Петро́в,转写:Stanislav Yevgrafovich Petrov,1939年9月9日-2017年5月19日),出