污点检验

✍ dations ◷ 2025-04-17 12:30:30 #计算机编程,静态程序分析

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

相关

  • 国家报《国家报》(西班牙语:El País)是西班牙的一家综合性日报,总部设在首都马德里,由普利沙集团所有。《国家报》正式创刊于1976年5月4日。在当时佛朗哥主义的意识形态下,《国家报》是
  • 中国酒泉卫星发射中心中国人民解放军军徽中国酒泉卫星发射中心,又称中国人民解放军第二十试验训练基地(中国人民解放军63600部队)、东风基地、东风航天城,位于内蒙古自治区阿拉善盟额济纳旗东风镇布
  • 大台南公车大台南公车(Tainan City Bus)系台南市市区汽车客运之品牌形象名称。台南市市区汽车客运系指以台南市公共运输处作为主管机关的公共汽车服务,主要由“干支线公车”与“市区公车
  • 新加坡福建话新加坡福建话(台罗拼音:Sin-ka-pho Hok-kiàn-uē,白话字:Sin-ka-pho Hok-kiàn-ōe),是通行于新加坡一带的闽语分支,属于闽南语中的泉漳片。语言系属与中国闽南本地的泉州话、漳州
  • 肠扭结肠扭转(volvulus)是指人体内环形消化道沿着本身及固定大小肠的肠系膜打结,最后会导致肠阻塞(英语:Bowel obstruction)。症状包括腹痛、腹胀、呕吐、便秘以及血便(英语:Blood in stoo
  • 博尔德博尔(法语:Bords)是法国滨海夏朗德省的一个市镇,位于该省中部,属于圣让当热利区。该市镇总面积15.47平方公里,2009年时的人口为1,347人。博尔(Bords)人口变化图示
  • 伤寒疫苗伤寒疫苗(Typhoid vaccines)是用于预防伤寒的疫苗。有两种疫苗类型可广泛使用:活性口服伤寒疫苗(英语:Ty21a)(口腔中的减毒性病毒)和纯化Vi多糖疫苗(英语:Vi capsular polysaccharide
  • 竹木拖把杆竹木拖把杆,竹棍,竹棒,竹杆不是那种自然生长的空心的竿子。而是以毛竹为原料,按照竹地板的工艺加工成板材后,抽圆并且上漆的拖把杆。内部是实心,质地坚硬。 用竹子制作的手柄,原料
  • 维多利亚乡 (雅西县)坐标:47°18′N 27°36′E / 47.300°N 27.600°E / 47.300; 27.600维多利亚乡(罗马尼亚语:Comuna Victoria, Iași),是罗马尼亚的乡份,位于该国东北部,由雅西县负责管辖,面积62平方
  • 藤本英雄藤本英雄(ふじもと ひでお、1918年5月10日-1997年4月26日),日本朝鲜族,朝鲜名李八竜(韩文:이팔룡),旧名藤本八竜、本名中上英雄,在韩国的釜山出生,8岁时移居日本山口县下关市。日本职棒