污点检验

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

相关

  • 造影剂造影剂也称为对比剂、㫫影剤,是一种X光无法穿透的药剂,用于让体内器官在X光检查时能看得更清楚。例如消化道摄影时,医师会让患者喝下一杯造影剂溶液(大多含钡),然后用各种角度照相
  • 黎元洪黎元洪(1864年10月19日-1928年6月3日),字宋卿,清末与中华民国政治家。生于湖北省黄陂县黎家河(今属大悟县),人称“黎黄陂”。清末加入海军,后担任新军协统,武昌起义后,担任湖北都督、中
  • 宗人府宗人府是中国明清时期管理皇家宗室事务的机构。掌管皇帝九族的宗族名册,按时撰写帝王族谱,记录宗室子女嫡庶、名字、封号、世袭爵位、生死时间、婚嫁、谥号安葬的事。凡是宗室
  • 曳物线曳物线 是指被曳拉物体受垂直于初始静止状态时绳线方向的牵引力作用下的运动轨迹。其参数方程形式为其中 l {\displaystyle l}
  • 2008年美国网球公开赛2008年美国网球公开赛于2008年8月25日至9月7日在美国USTA比莉·琼·金国家网球中心举行。这是第127届的美国网球公开赛。决赛: 罗杰·费德勒 击败 安迪·穆雷(6-2, 7-5, 6-2)
  • 支努干支努干(Chinook),又译奇努克或钦诺克,可以指:
  • 2-乙基丁酸2-乙基丁酸,结构式CH3CH2CH(C2H5)COOH。无色透明液体。溶于醇、醚。1、由2-乙基丁醇氧化而得。2、由3-戊醇在硫酸作用下于15~20°C与无水甲酸反应而得。用于生产增塑剂、防腐
  • 电荷共轭对称物理学中, 电荷共轭对称或称C对称(英语:C-symmetry)表示物理定律在电荷共轭转换中的对称性。电磁作用、重力作用、强作用等现象都遵守C对称,但弱作用则违反C对称。不论是古典或
  • 邝埜辛卯科三甲第二十七名进士邝埜(1385年-1449年),字梦质,籍贯湖南省宜章县城南乡新田村邝家门自然村人,出自宜章广田洞邝氏,明朝政治人物,同进士出身。永乐九年(1411年),邝埜中式辛卯科三
  • T2K实验T2K意思为东海(Tokai)到神冈(Kamioka),是日本一个粒子物理学实验,这是国际合作项目,包括日本,加拿大,法国,德国,意大利,韩国,波兰,俄罗斯,西班牙,瑞士,美国和英国。 这是K2K实验的第二代,另一