污点检验

✍ dations ◷ 2025-12-07 02:20:48 #计算机编程,静态程序分析

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

相关

  • 真菌过滤真菌过滤(英语:Mycofiltration)是利用蘑菇菌丝体垫的生物过滤器的处理过程。该术语是由真菌学家保罗·史塔曼兹(Paul Stamets)创造的新词。史塔曼兹原本想出的技术来控制从他的房
  • 柏林电视塔柏林电视塔(德语:Berliner Fernsehturm)位于柏林东区的中心,靠近亚历山大广场,共高368米,是德国最高建筑物同时也是欧洲第四高的建筑物。在1969年建成时曾是世界第二高电视塔同时
  • 埃万杰利斯塔·托里切利埃万杰利斯塔·托里切利(意大利语:Evangelista Torricelli,又译托里拆利,1608年10月15日-1647年10月25日),意大利物理学兼数学家,以发明气压计而闻名。气压单位托(torr)以他的名字命名
  • 促进剂催化剂又称触媒,是能透过提供另一活化能较低的反应途径而加快化学反应速率,而本身的质量、组成和化学性质在参加化学反应前后保持不变的物质。例如二氧化锰可以作为过氧化氢(双
  • 水冷水冷是一种液体冷却方式,一般是指用水等水性液体来冷却机器。其冷却运行方式跟油冷大同小异,都是将水在机器的水道里和在外部用喉管连接的散热器不停地穿流冷却。水冷是一战、
  • 氯化铋氯化铋化学式BiCl3,常温下是易潮解的白色晶体。与离子晶体三氟化铋不同,在气相或晶体中,氯化铋分子构型都为三角锥形,可从价层电子对互斥理论(VSEPR)解释。是常用的提供Bi3+离子的
  • 加州州立大学奇科分校加州州立大学奇科分校(California State University, Chico,Chico State)是加利福尼亚州立大学系统内、位于美国加利福尼亚州奇科的一所公立大学,成立于1887年。 2015年《美国新
  • 5 (专辑)《5》是法国著名歌手艾莉婕的第五张录音室专辑。原定于2012年发行,最终在2013年3月25日由索尼音乐灌制发行。该专辑的名字和封面是在2013年1月3日的明星学院揭晓的。而本专辑
  • 球鞋网络球鞋网络(英语:Sneakernet)形容使用移动物理介质的方式传输电子信息。一般定义被视为将信息从一台电脑传到另一台,而非使用互联网传输。包括但不限于:
  • 综合经济合作协议综合经济合作协议(英文:Comprehensive Economic Cooperation Agreement,简称CECA,或“经济合作协议”即ECA)是一项强化签署国之间的贸易协议,主旨在于促进双边的经济活动更趋向全