污点检验

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

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

相关

  • 中子活化中子活化指将样品用中子照射后,样品中原子经中子俘获而变得具有放射性的过程。俘获中子后的原子核通常会立即衰变,释放出中子、质子或阿尔法粒子同时生成新的活化产物。这些活
  • 健康政策分析卫生政策和健康的关系
  • 欧拉乔治·安德鲁·欧拉(英语:George Andrew Olah、匈牙利语:Oláh György,1927年5月22日-2017年3月8日),出生于布达佩斯,美籍匈牙利化学家。他在超强酸稳定碳正离子的研究中有杰出贡献
  • 丁奎岭丁奎岭(1966年3月15日-),河南永城人,中国化学家。1985年毕业于郑州大学化学系,1990年获南京大学化学系博士学位。2013年当选为中国科学院院士。曾任中国科学院上海有机化学研究所
  • abbr class=abbr title=R60: 可能损害生育能力R60/abbr警示性质标准词(英语:Risk Phrases,简写:R-phrases)是于《欧联指导标准67/548/EEC 附录III: 有关危险物品与其储备的特殊风险性质》里定义。该列表被集中并再出版于指导标准2001/
  • 第一个网页浏览器WorldWideWeb(后来为了避免与万维网混淆而改名为Nexus)是世界上第一个网页浏览器及所见即所得网页编辑器,由万维网的发明人蒂姆·伯纳斯-李开发。
  • 小泽征悦小泽征悦(1974年6月6日-),日本男演员。美国旧金山出生,为著名指挥家小泽征尔与模特及女演员入江美树(俄裔日本人,本名Vera Irina)之子,女性散文家小泽征良之弟。
  • 南岸区南岸区是重庆主城区之一,位于长江南岸,东经106度3分14秒—106度47分2秒、北纬29度27分2秒—29度37分2秒之间,与渝中区、九龙坡区、江北区、巴南区、渝北区相邻,户籍人口56万,常住
  • 冯远征冯远征(1962年11月16日-),生于北京,祖籍陕西韩城,中国大陆演员、导演。1985年考入北京人民艺术剧院,现为北京人民艺术剧院演员。妻子是演员梁丹妮,两人曾一同演出《最后的王爷》、《
  • 衢州电视台衢州市广播电视总台是中华人民共和国浙江省衢州市的广播电视播出机构,2005年由原衢州电视台、衢州人民广播电台等机构组建。现有3套电视频道、2套广播频率,收视人口200多万。1