污点检验

✍ dations ◷ 2025-11-21 05:55:31 #计算机编程,静态程序分析

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

相关

  • 奇南帕奇南帕(西班牙语:Chinampa;纳瓦特尔语:chināmitl),是中美洲墨西哥谷地原住民开创的农业耕作方式,于在浅湖床开垦的耕地上种植农作物。由于墨西哥谷地多湖,农民为扩张耕地面积,常利用
  • 奥运会比赛项目奥运会项目由国际奥林匹克委员会指定可以在夏季奥林匹克运动会及冬季奥林匹克运动会上进行比赛的运动项目。要被列入夏季奥运项目列表的运动,必须在四大洲至少有75个国家或地
  • 夫家夫家或婆家是指夫妻关系中丈夫之原生家庭。东亚传统的父系社会,夫家与夫妻关系要比娘家(妻之原生家庭)紧密,夫妻的家庭对婆家有许多经济、劳动上的义务。家婆(或作家姑、奶奶、婆
  • 1780年公元前1780年,最后的猛犸象在弗兰格尔岛灭绝,可能是由于气候变化和狩猎。
  • 曲云曲云(1929年-2020年3月23日),女,山东牟平人,中国电影表演艺术家,八一电影制片厂演员。代表作有电影《苦菜花》、《奇袭》等。
  • 雅加达邮报《雅加达邮报》(英语:The Jakarta Post)是印度尼西亚的一份英文日报,总部位于首都雅加达,由PT Niskala Media Tenggara主办。《雅加达邮报》由印尼前新闻部长阿里·穆尔多波(英语:A
  • 伤寒疫苗伤寒疫苗(Typhoid vaccines)是用于预防伤寒的疫苗。有两种疫苗类型可广泛使用:活性口服伤寒疫苗(英语:Ty21a)(口腔中的减毒性病毒)和纯化Vi多糖疫苗(英语:Vi capsular polysaccharide
  • 埃尔温·伯利坎普埃尔温·拉尔夫·伯利坎普(英语:Elwyn Ralph Berlekamp,1940年9月6日-2019年4月9日),美国数学家与计算机科学家,伯克利加州大学荣誉教授。他对现代编码理论和组合博弈论做出了很大
  • 佩特任山佩特任山(捷克语:Petřín;德语:Laurenziberg)是捷克首都布拉格市中心的一座山丘,海拔327米,高于伏尔塔瓦河左岸130米。这座山几乎被完全辟为公园,供布拉格居民休闲。这座山出现在弗
  • 奕灏散秩大臣(嘉庆六年~十年,嘉庆十一年~?年) 左翼前锋统领(嘉庆十九年~二十三年) 宗人府右宗人(嘉庆二十一年~?年) 正蓝旗满洲都统(嘉庆二十三年~?年) 内大臣(嘉庆二十四年~?年) 镶白旗汉军都统(嘉庆