污点检验

✍ dations ◷ 2025-11-13 16:11:18 #计算机编程,静态程序分析

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

相关

  • 细胞免疫细胞介导免疫(英语:Cell-mediated immunity)是一种免疫反应。细胞介导免疫会活化巨噬细胞、T细胞(CD4+或CD8+)并释放淋巴因子。不像体液免疫,其中没有抗体参与免疫反应。病原体被
  • 巴登-巴登巴登-巴登(德语:Baden-Baden),德国巴登-符腾堡州的城市,位于德国的西南部,黑森林的西麓,奥斯河谷,邻近卡尔斯鲁厄。巴登-巴登是著名的温泉疗养地、旅游胜地和国际会议城市。著名美国
  • 京瓷京瓷(日语:京セラ/きょうせら Kyōsera */?)是源于日本的跨国科技公司,由稻盛和夫创立于1959年,总部位于日本京都市伏见区。其以精密制陶起家,目前以生产电子制品为事业主力。
  • 印度人口政策印度人口政策的长期目标是使印度人口稳定在与经济和社会的可持续发展相适应的水平。为此,印度政府设立了国家人口委员会(National Commission on Population)。与中国的计划生
  • 长尾水獭(L. longicaudis)长尾水獭(Lontra longicaudis)是分布在中美洲、南美洲及特立尼达的水獭。长尾水獭栖息在不同的河流环境,包括落叶林及常绿森林、大草原等。它们似乎较喜欢清澈的河流,较少在污浊
  • 圣约翰斯 (纽芬兰-拉布拉多)圣约翰斯(英语:St. John's,发音: /ˌseɪntˈdʒɑːnz/)是加拿大纽芬兰与拉布拉多省的首府及最大城市,也是北美最古老的英裔城市。城市位于纽芬兰岛东部的阿瓦隆半岛东侧,面向大西
  • 番薯圆蕃薯圆是汤圆的新创意食材,将原来面粉汤圆加入地瓜浆,煮制造甜汤;因为加入地瓜浆、树薯粉,所以蕃薯圆呈现半透明晶莹剔透光泽,格外有嚼劲,在台湾几乎已取代小汤圆,与芋圆制作相同,也
  • 阿夫拉姆·米内罗阿夫拉姆·米内罗(Abraham Minero Fernández,1986年2月22日-)是西班牙的一位足球运动员。在场上司职左后卫。他现在效力于西班牙足球甲级联赛球队皇家萨拉戈萨足球俱乐部。
  • 中你的毒《中你的毒》(英语:),是美国女歌手布兰妮·斯皮尔斯的一首歌曲。收录于她的第4张录音室专辑《流行禁区》()中。歌曲于2004年1月13日作为专辑的第2支单曲发行。唱片公司原定于《蹦
  • 十字架山十字架山(立陶宛语:Kryžių kalnas)是立陶宛北部城市希奥利艾以北12公里处的一个朝圣地。其确切的起源无人知晓,不过据认为第一批十字架是1831年11月立陶宛人反俄起义后,放置在