Archive for the ‘php扩展开发’ tag
taint的使用和源码修改
taint是什么?它是一个可以检测XSS漏洞的php扩展。
说明和初步的使用请查看http://www.laruence.com/2012/02/18/2560.html
taint目前最新的0.41
通过查看源码,可以发现它只能跟踪3种变量POST,GET,COOKIE。另外的REQUEST由于是通过这几个构造的。所以也可跟踪。
有3个函数是可以让我们直接调用的,
分别是taint,untaint,is_tainted
1)taint($string)
参数是一个字符串,可以定制跟踪的字符串。
比如如下代码将会抛错
结果会
Warning: main(): Attempt to echo a string that might be tainted in /media/d/htdocs/1.php on line 4 Hello Taint
2)untaint($string)
参数也是一个字符串,这个函数的作用是取消已经taint标记的变量,
比如
这个不会触发taint的报警
3)is_tainted()
无参数,返回布尔值,表示是否已经开启taint
taint是无法覆盖所有代码逻辑的,部分地方还是会没法检测到。
另外只能对已经存在的变量进行跟踪。
比如如下部分的$b是无法被跟踪到的
========================================================
下面这个taint版本是我用pecl最新的那个0.41改的
加入了一个taint_enable()函数
——–update: 请教了二姐5.3因为运行机制的原因是无法在请求开始的时候自动跟踪,但是用这个函数就可以实现了
这个函数不仅仅用于开启taint跟踪,同时会跟踪无法自动启用跟踪的$_SERVER , $_ENV, $_FILES这三个全局变量
另外改进了taint()和untaint()函数,让参数可以接受数组输入
自己测试了下,暂时没发现bug。
下载地址
[download id=”37″]