污点检验

✍ dations ◷ 2025-07-31 08:35:42 #计算机编程,静态程序分析

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

相关

  • 条目肺炎(pneumonia),是指肺部出现发炎的症状,主要是肺泡受到影响。肺炎常见的症状包括有痰的咳嗽、胸痛、发热及呼吸困难。症状可能由轻微到严重不一。特别高龄的长者或新生儿可能
  • ø半闭前圆唇元音(The close-mid front rounded vowel, or high-mid front rounded vowel )是母音的一种,用于一些语言当中,国际音标是 ⟨ø⟩。注意其符号与语言学上表示“零(英语
  • PS10太阳能发电塔PS10太阳能发电塔(PS10 solar power tower)是欧洲首座的商业性聚光式高温太阳能发电厂(CSP)。该电厂位于西班牙南部,塞维利亚(Seville)西方25公里的桑路卡拉马尤(Sanlúcar l
  • 邱仕荣邱仕荣(1912年12月26日-1998年11月26日),台湾医学家,专长妇产科学,出生于日治台湾新竹厅三叉河支厅铜锣湾区三座厝庄,(今苗栗县铜锣乡竹森村)。邱仕荣为政商钜子新竹州会议员邱云兴长
  • 广济桥 (潮州)广济桥,俗称湘子桥,位于广东省潮州市东门外,为古代闽粤交通要道。与赵县赵州桥、惠安县洛阳桥及北京芦沟桥并称“中国四大古桥”,集拱桥、梁桥及浮桥于一体,为中国第一座启闭式浮
  • .com (消歧义).com是一个顶级域名。.com也可指:
  • 白桑白桑()是桑属的一种小型到中型的落叶乔木,高度约10–20 米。白桑原生于中国北部,并广于世界各地种植。由于白桑是养蚕业的重要饲料,很早就在中国培育,果实称为桑椹,初生白色,成熟后
  • 白兰 (电影)《白兰》(韩语:파이란,英语:),是2001年上映的一出韩国电影,改编自浅田次郎短篇小说《情书》。张柏芝凭本片获得第39届韩国电影大钟奖最佳女主角提名。两颗异地的心﹐既近亦远……。母
  • 猛瓘猛瓘(1643年-1674年),又名猛峨,满洲爱新觉罗氏。清太宗皇太极孙、肃武亲王豪格第五子。顺治十四年(1657年),猛瓘被封为温郡王。康熙十三年(1674年),猛瓘逝世,朝廷予以谥号“良”。长子佛
  • 辰孙王辰孙王(朝鲜文:진손왕,356年 - ?),百济的王族,贵须王(近仇首王)的孙及辰斯王的子。一名知宗王。他在祖父近仇首王的命日本波见同行儒学家王仁。