其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的
乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。
如果你不懂什麼是xss,可以看
這裡,或者
這裡(中文的也許會好懂一些)。
國內不少論壇都存在跨站指令碼漏洞,例如
這裡 有乙個google hack+xss的攻擊例子,針對的是discuz
4.0.0rc3
。國外也很多這樣的例子,甚至google也出現過,不過在12月初時修正了。跨站攻擊很容易就可以構造,而且非常隱蔽,不易被查覺(通常盜取資訊後馬上跳轉回原頁面)。
如何攻擊,在此不作說明(也不要問我
<?php
$str
= "a 'quote' isbold"
;// outputs: a 'quote' isbold
echo
htmlentities
($str
);// outputs: a 'quote' isbold
echo
htmlentities
($str
, ent_quotes
);?>
這樣可以使非法的指令碼失效。
但是要注意一點,htmlentities()
預設編碼為 iso-8859-1,如果你的非法指令碼編碼為其它,那麼可能無法過濾掉,同時瀏覽器卻可以識別和執行。這個問題我先找幾個站點測試後再說。
這裡提供乙個過濾非法指令碼的函式:
function removexss($val) -_|\'\\';
for ($i = 0; $i < strlen($search); $i++) matches any padded zeros, which are optional and go up to 8 chars
// @ @ search for the hex values
$val = preg_replace('/([x|x]0'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
// @ @ 0 matches '0' zero to seven times
$val = preg_replace('/(�'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
} // now the only remaining whitespace attacks are \t, \n, and \r
while ($found == true) ([9][a][b]);?)?';
$pattern .= '|(�([9][10][13]);?)?';
$pattern .= ')?';
} $pattern .= $ra[$i][$j];
} $pattern .= '/i';
$replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2); // add in <> to nerf the tag
$val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
if ($val_before == $val)
} }
}
PHP和XSS跨站攻擊
其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看這裡,或者這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如這裡 有乙個goo...
PHP和XSS跨站攻擊
其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的 乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看 這裡,或者 這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如 這裡 有乙...
PHP和XSS跨站攻擊
其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的 乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看 這裡,或者 這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如 這裡 有乙...