污点检验

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

相关

  • 自治领地自治领(英语:Dominion)是大英帝国殖民地制度下一个特殊的国家体制,可说是殖民地步向独立的最后一步。19世纪,所有实行自治或半自治的英国殖民地,尤其那些已具有自身宪政体制的,如加
  • 佐治亚佐治亚州(英语:State of Georgia),是美国东南方的一个州,邮政简写是GA。该州也是美国独立时期13州的成员之一。首府为亚特兰大。在13州中排名第4,1778年1月2日加入独立战争。2000
  • 第二十七条修正案宪法正文I ∙ II ∙ III ∙ IV ∙ V ∙ VI ∙ VII其它修正案 XI ∙ XII ∙ XIII ∙ XIV ∙ XV XVI ∙ XVII ∙ XVIII ∙ XIX ∙ XX XXI ∙ XXII ∙ XXIII ∙
  • 4f6 6s2 2, 8, 18, 24, 8, 2蒸气压 第一:544.5 kJ·mol−1 第二:1070 kJ·mol−1 主条目:钐的同位素 钐是一种化学元素,符号为Sm,原子序为62。它是一种中等硬度的银色金属,在空气
  • 约翰·伯格约翰·彼得·伯杰(英语:John Peter Berger,1926年11月5日-2017年1月2日),英格兰艺术评论家,小说家,画家和诗人。1926年出生在英国伦敦,1944年至1946年第二次世界大战期间在英国陆军服
  • 尼古拉·尼古拉耶维奇·罗季奥诺夫尼古拉·尼古拉耶维奇·罗迪奥诺夫(俄语:Никола́й Никола́евич Родио́нов,1915年4月30日-1999年1月28日)是苏共列宁格勒市委第一书记、苏联外交部副
  • 乐经《乐经》是传说中的儒家六经之一,久佚,后世多谓之毁于秦始皇焚书,但《乐经》是否存在仍然众说纷纭。古往今来有多人对其进行过论述,可大致归纳如下:2008年7月由校友赵伟国从境外
  • 舜天舜天(琉球语:舜天/シュンティン  ?;1166年-1237年)据《中山世鉴》和《中山世谱》中记载,是琉球国舜天王朝建立者,神号尊敦。1187年至1237年在位。根据《中山世鉴》记载,他是日本武
  • 超消色差超消色差或超消色差透镜是马克西米利安·赫茨贝格尔(英语:Maximilian Herzberger)最先构想和发展出来的终极高修正镜头。超消色差透镜的色偏移曲线是四次方程,意味着在理论尚能
  • 布雷斯悖论布雷斯悖论(英语:Braess's paradox)是1968年由德国数学家迪特里希·布雷斯(德语:Dietrich Braess)提出的一个悖论,它是指在一个交通网络上增加一条路段反而使网络上的旅行时间增加;