污点检验 污点检验英語Taint checking是某些程序语言所拥有的特性例如Perl和Ruby可用于增加安全性和避免恶意用户在主机上执行命令污点会检验突出的安全风险一般来说这些风险与那些使用SQL注入或缓冲区溢出攻击的网站相关 污点检验的原理是任何变量例如在网页表单区域的一个变量集能够被外部用户修改从而造成了潜在的安全危险如果该变量被一个表达式赋值给第二个变量那么第二变量也是可疑的污点检验工具在变量间传递运行直到外部输入潜在地影响到所有的变量如果这些变量中任何一个变量被用于执行危险命令例如对SQL数据库或主机操作系统的直接命令污点检检验工具将警告该程序正在使用有潜在危险的污点变量程序员可以通过重新设计程序来避免因危险的输入而导致的安全问题 污点检验能够被视为一个无界面全面验证的保守近似或者是更一般化的安全信息流概念因为系统中的信息流不能通过检验一个简单的执行追踪而被验证污点分析的结果将必然地反映关于该系统信息流特征的近似信息