污点检验

✍ dations ◷ 2025-12-05 10:23:26 #计算机编程,静态程序分析

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

相关

  • 精神科医生精神科医生(英语:Psychiatrist)是以精神病学为专业的医生,负责治疗精神病。精神科医生授权配药、进行体格检查及心理治疗、以及进行神经成像如电脑断层扫描、核磁共振成像和正电
  • 钒酸钾铀矿钒酸钾铀矿(Carnotite)是一种非常常见的铀矿形态。它是经由地下水冲蚀铀矿矿床,而被侵蚀的铀矿会随着地下水的流速降低而开始沉积在其它岩床上。所以,钒酸钾铀矿大多以次生矿的
  • 东森电影台EBC东森电影,是东森电视旗下的频道之一。
  • 右翼自由意志主义右翼自由意志主义(英语:Right-libertarianism)是指崇尚资本主义市场经济和个人权利,反对现代福利国家的自由主义政治思想。右翼自由主义强烈支持私有制和财产权,强烈反对政府对自
  • 核爆炸核爆炸是剧烈核反应中能量迅速释放的结果,可能是由核裂变、核聚变或者是这两者的多级串联组合所引发。尽管迄今为止几乎所有的聚变核武器都是以裂变装置作为基础的,但实际上纯
  • 胡特尔派胡特尔派,又译哈特派,是基督教新教再洗礼派的一个分支,和阿米什人和门诺会一样,其来源可追溯到16世纪激进宗教改革时期。其创始人雅各布·胡特尔(Jacob Hutter)死后,教民以共产主义
  • 氢硫化铵氢硫化铵,又名硫化氢铵或硫氢化铵,是一种无机化合物,化学式为NH4HS。氢硫化铵可由硫化氢通入浓氨水至饱和制得。氢硫化铵化学性质不稳定,易分解。
  • 伯莱什蒂乡 (戈尔日县)坐标:45°01′N 23°13′E / 45.017°N 23.217°E / 45.017; 23.217伯莱什蒂乡(罗马尼亚语:Comuna Bălești, Gorj),是罗马尼亚的乡份,位于该国西南部,由戈尔日县负责管辖,面积79平
  • 粘核光桃粘核光桃(学名: var. )为蔷薇科李属下的一个变种。
  • 里吉-勒杜克效应里吉-勒杜克效应(英语; Righi-Leduc effect)是一种物理现象。沿导体的温度梯度垂直的方向加磁场,则导体在和原有温度梯度和磁场平面垂直的方向又形成一个新的温度梯度。意大利