污点检验

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

相关

  • 维蒂希格奥尔格·维蒂希(德语:Georg Wittig,1897年6月16日-1987年8月26日),德国化学家,1979年因将磷化合物用于有机合成之中而与赫伯特·布朗分享诺贝尔化学奖。1897年6月16日生于德意志
  • 本戈省坐标:8°47′S 13°59′E / 8.783°S 13.983°E / -8.783; 13.983 本戈省位于安哥拉西北,与北广萨省、南广萨省、罗安达省、威热省、萨伊省等省份及相邻。省会是卡希托。根据1
  • 新戊二醇新戊二醇,分子式C5H12O2,有机化合物,常用于化学纤维、涂料、润滑剂等的合成生产过程中。白色无臭结晶,有吸湿性。易溶于水、低级醇类、酮、醚和芳烃等。低毒。自燃点399°C。升
  • 王柯王柯(1956年-),中国人类学家、少数民族专家,神户大学研究生院教授。生于河南省南阳市,毕业于中央民族大学民族语言文学系并取得硕士学位,于东京大学取得博士学位,师从知名伊斯兰史专
  • 小珊瑚岛小珊瑚岛(泰语:เกาะล้าน)是一个位于暹罗湾附属海湾曼谷湾中的岛屿。小珊瑚岛是泰国近岛群岛中最大的岛屿,其位于芭达雅的南方、曼谷湾的东南方、暹罗湾的东部。在行政区
  • 朝鲜成宗朝鲜成宗(朝鲜语:조선 성종/朝鮮 成宗 ;1457年8月19日-1495年1月20日), 是朝鲜王朝的第9代君主,1469年至1494年在位。讳李娎(朝鲜语:이혈/李娎 ),庙号成宗,谥号康靖仁文宪武钦圣恭孝大王
  • 弼利民弼利民(又名弼来满,Lyman Burt Peet,1809年3月1日-1878年1月11日)是中国福州最早的公理会传教士之一。弼利民于1809年3月1日出生在美国佛蒙特州康沃尔。1834年他毕业于明德大学,18
  • 绯红湿伞绯红湿伞(学名:),俗称猩红罩(scarlet hood)、猩红蜡伞(scarlet waxcap)或义红蜡伞(righteous red waxy cap),是一种色彩鲜艳的担子菌门真菌,隶属于湿伞属(英语:Hygrocybe)。这种真菌广泛分
  • 光泽蜗牛亚科光泽蜗牛亚科(学名:Helicostylinae)是坚齿螺科之下的一个亚科。原为巴蜗牛科之下两个亚科之一,2017年《布歇特等人的腹足类分类》将巴蜗牛科并入坚齿螺科,本亚科亦成为了坚齿螺科
  • 抚琴街道抚琴街道,是中华人民共和国四川省成都市金牛区下辖的一个乡镇级行政单位。抚琴街道下辖以下地区:抚琴西北街社区、西南街社区、金鱼街社区、金琴路社区、圃园路社区、铁路新村