污点检验

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

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

相关

  • 获得性免疫缺陷(英语:immunodeficiency)是指免疫系统抵抗传染病的能力失常或欠缺。免疫缺陷还可能降低肿瘤免疫监视功能。免疫缺陷多为继发性(secondary)免疫缺陷,不过也有些人生来就有
  • 人文地理学人文地理学(英语:Human geography),是一类社会科学分支,关于研究世界、人类社会、文化、经济与环境的相互作用,强调空间和地区的关系。作为一门学科,地理分为自然地理和人文地理,后
  • 张宏福张宏福(1962年-),中国地球化学家,西北大学地质学系教授,中国科学院院士。张宏福1962年出生于陕西省山阳县,1985年毕业于西北大学地质系,1988年在中国地质大学(北京)获硕士学位,1998年于
  • 詹姆士二世婚生子女:玛丽二世安妮詹姆斯·弗朗西斯·爱德华·斯图亚特路易莎·玛丽亚·特雷莎·斯图亚特詹姆斯二世(苏格兰称为詹姆斯七世,James II and VII,1633年10月14日-1701年9月16日),1
  • MKUltra计划MKUltra计划(英语:Project MKUltra),是指由美国中央情报局统筹的一项人类思想控制试验计划。该计划始于20世纪50年代初,至1953年被正式认可,1964年缩减规模,1967年进一步削减,1973年
  • 金汉珍金汉珍(1920年8月-2020年2月7日),女,浙江绍兴人,中国儿科学专家。复旦大学附属儿科医院终身教授。1920年8月生于湖北汉口。祖籍浙江绍兴。1945年,毕业于国立上海医学院医学系。1945
  • 配边在数学中,配边(英文:cobordism 来自法文的 )是紧流形的等价关系。它使用边界的拓扑概念。若两个流形M和N的不交并是另一个流形W的边界,那么M和N这两个流形是配边的。此外M和N的配
  • 蔡美彪蔡美彪(1928年3月26日-),出生于天津,祖籍浙江杭州,中国历史学家。天津人,祖籍浙江杭州。1949年毕业于南开大学历史系,1952年北京大学研究生毕业。1953年起协助范文澜编写中国通史前
  • 汉克·阿扎里亚汉克·阿尔伯特·阿扎里亚(英语:Hank Albert Azaria,1964年4月25日-)是一位美国电影和电视演员、导演、喜剧演员及配音演员。他的父亲是哥伦比亚电影公司的一位广告员。阿扎里亚
  • 约翰·何顿·康威约翰·何顿·康威(英语:John Horton Conway,1937年12月26日-2020年4月11日),生于英国利物浦,数学家,活跃于有限群的研究、趣味数学、纽结理论、数论、组合博弈论和编码学等范畴。康