PHP和XSS跨站攻擊

2021-04-13 09:13:35 字數 1862 閱讀 1479

其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。

如果你不懂什麼是xss,可以看這裡,或者這裡(中文的也許會好懂一些)。

國內不少論壇都存在跨站指令碼漏洞,例如這裡  有乙個google hack+xss的攻擊例子,針對的是discuz

4.0.0rc3

。國外也很多這樣的例子,甚至google也出現過,不過在12月初時修正了。跨站攻擊很容易就可以構造,而且非常隱蔽,不易被查覺(通常盜取資訊後馬上跳轉回原頁面)。

如何攻擊,在此不作說明(也不要問我),主要談談如何防範。首先,跨站指令碼攻擊都是由於對使用者的輸入沒有進行嚴格的過濾造成的,所以我們必須在所有資料進入我們的**和資料庫之前把可能的危險攔截。針對非法的html**包括單雙引號等,可以使用

htmlentities() 。

<?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,可以看 這裡,或者 這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如 這裡 有乙...

PHP和XSS跨站攻擊

其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的 乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看 這裡,或者 這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如 這裡 有乙...

PHP和XSS跨站攻擊

其實這個話題很早就想說說了,發現國內不少php站點都有xss漏洞。今天偶然看到php5的 乙個xss漏洞,在此小結一下。順便提醒,使用php5的朋友最好打下補丁,或者公升級一下。如果你不懂什麼是xss,可以看 這裡,或者 這裡 中文的也許會好懂一些 國內不少論壇都存在跨站指令碼漏洞,例如 這裡 有乙...