污点检验

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

相关

  • 兼性厌氧生物兼性厌氧菌是一类既可以进行有氧呼吸,也能够进行无氧呼吸或发酵的微生物。在氧气充足时,它们会通过有氧呼吸来产生ATP(三磷酸腺苷),但当氧气缺乏时,它们的呼吸方式就会变为无氧呼
  • 谢尔本威廉·佩蒂·菲茨莫里斯,第一代兰斯当侯爵(英语: William Petty Fitzmaurice,1st Marquess of Lansdowne;1737年5月2日-1805年5月7日),以第二代谢尔本伯爵的称号更为人所知。英国首
  • 花旗松花旗松(学名:Pseudotsuga menziesii)又称北美黄杉,是原产于美国西北部的一种常绿裸子植物。其中一个变种海滨黄杉(Pseudotsuga menziesii var. menziesii)生长在海岸区域,从加拿大
  • 前棱蜥科见内文前棱蜥科(Procolophonidae)是类小型爬行动物,生存于二叠纪到三叠纪时期。前棱蜥科的外表看起来像粗短的蜥蜴,头骨的直径大约5公分长,有宽广的脸颊。它的脸颊形成往后突出的
  • 韩国地域对立韩国地域对立,是指统一新罗至朝鲜王朝,朝鲜半岛长达一千三百多年以来,韩国各道之间的矛盾。韩国全罗道人与庆尚道人不和,可以追溯到统一新罗时代,百济人成为新罗臣民。在高丽王朝
  • 边值问题在微分方程中,边值问题是一个微分方程和一组称之为边界条件的约束条件。边值问题的解通常是符合约束条件的微分方程的解。物理学中经常遇到边值问题,例如波动方程等。许多重要
  • 度 (图论)在图论中,一个顶点在图中的度 (degree)为与这个顶点相连接的边的数目。在多重图中,自环被计数两次。 顶点 v {\displaystyle v} 的最大度
  • 沃森石沃森石是一种由硫和钛组成的矿物。这种矿物是2011年在一颗编号为“大和691”的陨石中发现的。这颗陨石是日本科研人员1969年12月在南极大和山附近发现。
  • 吉米·法克斯詹姆斯·伊莫瑞·法克斯(James Emory Foxx,1907年10月22日-1967年7月21日)是美国职棒大联盟具有长打能力的右打者。法克斯是第二位打出500支本垒打的球员,并且以32岁11月又2天成
  • 2-羟氨基乙酸2-羟氨基乙酸(也称N-羟基甘氨酸)是一种有机化合物,化学式为C2H5NO3。它可由2-溴乙酸和羟胺在乙醇中于室温反应得到。它和丙烯酸在三乙胺的存在下于甲醇中反应,得到N-羧甲基-N-羟