污点检验

✍ dations ◷ 2025-11-29 21:25:12 #计算机编程,静态程序分析

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

相关

  • 异位妊娠异位妊娠(Ectopic pregnancy),又称为子宫外孕(eccyesis),是指胚胎在子宫以外部位着床的妊娠并发症。典型症状和体征包含腹痛及阴道出血(英语:vaginal bleeding),上述二种症状都有的女
  • 北安普敦北安普敦(英语:Northampton)为位于美国马萨诸塞州西部的城市,是汉普希尔县的县治所在,人口约3万(2000年)。今日的北安普敦是音乐、艺术及反主流文化的中心。北安普敦是马萨诸塞州斯
  • 氏族氏族之成员一般有一共同祖先或有一想象的共同祖先,其成员一般不会是另一个氏族的成员,成员之间有特别密切的关系、权利和义务,氏族有自己独特的称号,一般来说氏族内部成员之间不
  • 小岩部神经小岩部神经(lesser petrosal nerve),又称小浅岩部神经,为舌咽神经的一条分支,属于一般内脏传出神经(GVE),神经纤维中带有来自鼓室神经丛(英语:tympanic plexus)的副交感神经纤维,并输入
  • 咖啡加工咖啡加工(Coffee Production)是一种将咖啡树的咖啡果转换为生咖啡豆商品的工业过程。过程中将咖啡果的果实或果肉去除,留下种子或豆子,并将之烘干。不同的加工方式会影响咖啡在
  • 足跟在人体解剖学中,踵是脚的后跟。踵是由踵骨支撑的,位于腿下端的骨骼关节之下。对于脚的压力分布于五个力线,其中三个在内侧,也就是大脚趾侧,两个在外侧,也就是小脚趾侧。外侧的力线
  • 周之琦周之琦(1782年-1862年),字稚圭,河南祥符人。清朝政治人物。生于乾隆四十七年(1782年),嘉庆十三年(1808年)中进士,改庶吉士。散馆,授编修。道光九年(1829年),由浙江按察使升任广西布政使。道
  • 许晴许晴(1969年1月22日-),因随母系而成为土家族,出生于北京,中国大陆女演员,1988年考入北京电影学院表演系本科,首次亮相荧幕是在1990年出品的电影《边走边唱》中饰演女主角。代表作有
  • 俄克拉荷马狭地奥克拉荷马狭地(Oklahoma Panhandle,Neutral Strip)位于奥克拉荷马西北部,以37°N、103°W、36.5°N、100°W为边界,长267公里,宽55公里。奥克拉荷马狭地曾为西班牙帝国的一部分,在
  • 始祖兽始祖兽(学名)是一种已灭绝的哺乳动物,有可能是真兽下纲的最早祖先。始祖兽的化石是在中国辽宁的义县组发现,可追溯至下白垩纪的巴列姆阶。这个标本长10厘米及差不多完整,估计重量