污点检验

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

相关

  • 疟原虫疟原虫属(Plasmodium)是一类单细胞、寄生性的囊泡虫。本属生物通称为疟原虫。本属生物中有五种疟原虫会使人类感染疟疾,包括恶性疟原虫(Plasmodium falciparum)、三日疟原虫(Plasm
  • 回避型人格障碍回避性人格障碍(英语: Avoidant Personality Disorder; 简称AvPD或APD),或译畏避型人格障碍、逃避型人格障碍、畏惧型人格违常,属于人格障碍的一种。因为害怕在别人面前丢脸,此类
  • 裴李岗文化裴李岗文化是中国黄河中游地区的新石器时代文化,在仰韶文化之前,由于最早在河南新郑的裴李岗村发掘并认定而得名。该文化的分布范围,以新郑为中心,东至河南东部,西至河南西部,南至
  • 西印度毁灭述略《西印度毁灭述略》(西班牙语:Brevísima relación de la destrucción de las Indias,另有中文译名《西印度灭亡简史》),由16世纪西班牙多明我会教士巴托洛梅·德拉斯·卡萨斯(B
  • 源氏源氏(Minamoto、Genji)是日本一个著名的氏族,活跃于平安时代,最著名的分支为清和源氏。平安时代末期,与另外一支氏族平氏爆发了源平合战,最终胜利,而开启了幕府时代。氏族是天皇臣
  • 小包脚菇属小包脚菇属(学名:Volvariella)是光柄菇科的一个属,其下有约50种物种,多生长于草原、树林的土壤中,有至少一种物种(立起小包脚菇(英语:Volvariella surrecta))寄生于其他蕈类。本属物种
  • 测绘学测绘学研究测定和推算地面几何位置、地球形状及地球重力场,据此测量地球表面自然物体和人工设施的几何分布,编制各种比例尺地图的理论和技术的学科。测绘学的研究对象是地球的
  • 圣塔克拉拉大学圣克拉拉大学(Santa Clara University,简称 SCU),又译圣塔克拉拉大学、圣塔克罗拉大学,是一所位于美国加州圣克拉拉的耶稣会私立大学,创设于1851年。是加州持续开校的大学里历史最
  • digiKamDigiKam是KDE桌面环境的影像管理和编辑程序,支持所有主要图像格式,并可以组织目录为基础的照片收藏,或按日期、时间、或标签的动态相册。用户还可以对图像添加标题和评语,搜索他
  • 大卫·博罗斯大卫·博罗斯(David Burrowes,1969年6月12日-)是一位英格兰政治人物,他的党籍是保守党。自2010年开始,他担任恩菲尔德绍斯盖特选区选出的英国下议院议员。他是保守党基督徒团契的