污点检验

✍ dations ◷ 2025-06-29 23:25:59 #计算机编程,静态程序分析

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

相关

  • 620110 数学 120 信息科学与系统科学 130 力学 140 物理学 150 化学 160 天文学 170 地球科学 180 生物学210 农学 220 林学 230 畜牧、兽医科学 240 水产学310 
  • 苯并[b]噻吩苯并噻吩(分子式:C8H6S),又称硫茚,是一种由苯环和噻吩环经   [ {\display
  • 鸟类迁徙鸟类迁徙是鸟类随着季节变化进行的,方向确定的,有规律的和长距离的迁居活动。在动物界中,类似的活动非常常见,对昆虫则称为“迁飞”,对鱼类则称为“洄游”,对哺乳动物则称为“迁移
  • 青铜文化青铜时代(Bronze Age),又称青铜器时代、青铜文明,在考古学上是以使用青铜器为标志的人类文化发展的一个阶段。青铜是红铜和锡或铅的合金,因为其氧化物颜色青灰,故名青铜。由于青铜
  • 亨利·克林顿爵士陆军上将亨利·克林顿爵士,KB(General Sir Henry Clinton,1730年4月16日-1795年12月23日),英国陆军将领及政治家,早年曾参与七年战争,1778年5月至1782年2月任北美英军总司令,其间为美
  • 函数指针函数指针是一种在C、C++、D语言、其他类 C 语言和Fortran 2003中的指针。函数指针可以像一般函数一样,用于调用函数、传递参数。在如 C 这样的语言中,通过提供一个简单的选取
  • 查莉成长日记查莉成长日记()是迪士尼频道原创电视剧集,首播于2010年4月4日。整个剧集围绕邓肯一家展开,核心剧情为其第四个孩子——查莉(Charlie)出生后所发生的故事。在每一集中家中第二个孩
  • 葛拉姆马萨拉葛拉姆马萨拉(英语:Garam masala、印地语:गरम मसाला,直译为综合辛香料),由多种辛香料磨成粉末混合而成,属于马萨拉的一种,常见于印度北部和南亚烹饪中,可以是单独或配以其他
  • 乔治·雷穆斯乔治·雷穆斯(George Remus,1878年11月13日-1952年1月20日)是一名在禁酒时期的美国律师和私酒贩(英语:Rum-running)。雷穆斯的势力在禁酒令初期时崛起。雷穆斯于1878年在德国莱希河
  • 马耳他女王马耳他女王(马耳他语:Reġina ta' Malta),是马耳他在1964年9月21日到1974年12月13日的国家元首头衔。马耳他女王职衔现已废除,国家元首一职改由马耳他总统行使。1964年马耳他从英