污点检验

✍ dations ◷ 2025-11-17 19:10:59 #计算机编程,静态程序分析

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

相关

  • 闺密闺密、闺蜜可以指:
  • 雷电闪电是在大气科学中指大气中的强放电现象。闪电或雷电还可以指:
  • 乳房调情乳头爱抚,是对乳头附近的刺激使其坚挺兴奋(英语:stimulation of nipples),是一种常见的性表现,施行对象可包含自己或其他人,不限于任何性别或性倾向。据成年男女报告显示对胸部的性
  • 固伦公主端庄固伦公主(满语:ᡩᠣᠩᡤᠣ,转写:Donggo;1578年-1652年),本名嫩哲,亦称东果格格、东果公主。清太祖之长女,生母为清太祖元妃。明万历六年(1578年)二月二十二日戌时出生。万历十六年(15
  • 枢机红枢机红(英语:Cardinal)是红色之一,得名自枢机的衣服颜色,但实际上衣服的颜色是猩红色。枢机红是斯坦福大学、麻省理工学院、布朗大学、维思大学、南加州大学和卡内基梅隆大学的学
  • 佛蒙特州佛蒙特州(英语:State of Vermont,i/vərˈmɒnt/))是美国第14个州,以其美丽的景色、奶制品、枫糖浆和激进的政治而著称。佛蒙特总共拥有14个县。这14个县,辖下有255个政治单位或地
  • 陈梦吉传奇《陈梦吉传奇》(英文:The Witty Attorney)是亚视1999年播出的电视剧,由张卫健、吴孟达、张茜、李颖、黄一飞领衔主演,是描述清朝道光年间一代状王方唐镜与一代桥王陈梦吉在公堂上
  • 伊万·霍夫汉内斯·巴格拉米扬伊万·赫里斯托福罗维奇·巴格拉米扬(I)(或称霍夫汉内斯·哈恰图罗维奇·巴格拉米扬,亚美尼亚语:Հովհաննես Խաչատուրի(或者称Քրիստափորի,拉丁化:Chri
  • 三仙隧道三仙隧道位于台湾台东县成功镇,横跨于白守莲山之间,该隧道为省道台11线花东滨海公路之重要建设之一,因邻近花东海岸著名景点三仙台而得名三仙隧道,目前由交通部公路总局第三养工
  • 莞龙路莞龙路连接广东省东莞市市区至东莞市石龙镇的一条一级公路,为东莞市四大主要干道之一。莞龙路为东莞市路网的里程碑。由于基础相对差,公共运输成了制约东莞发展的瓶颈。因此在