在php中修補xss漏洞,我們可以使用三個php函式。
這些函式主要用於清除html標誌,這樣就沒辦法注入**了。使用更多的函式是htmlspecialchars() ,它可以將所有的"<"與">"符號轉換成"<" 與">;"。其它可供選擇的函式還有htmlentities(), 它可以用相應的字元實體(entities)替換掉所有想要替換掉的特徵碼(characters)。
php code:
// 這裡的**主要用於展示這兩個函式之間輸出的不同
$input = '';
echo htmlspecialchars($input) . ' ';
echo htmlentities($input);
?>
htmlentities()的另乙個例子
php code:
$str = "a 'quote' is bold";
echo htmlentities($str);
echo htmlentities($str, ent_quotes);
?>
第乙個顯示: a 'quote' isbold
第二個顯示:a 'quote' isbold
htmlspecialchars()使用例項
php code:
$new = htmlspecialchars("test", ent_quotes);
echo $new;
?>
顯示:
test
strip_tags()函式代替.刪除所有的html元素(elements),除了需要特別允許的元素之外,如:, 或 .
strip_tags()使用例項
php code:
$text = '
test paragraph.
other text';
echo strip_tags($text);
echo "/n";
// allow
echo strip_tags($text, '
');?>
首先我發現問題出在search.php這一檔案上,現在讓我們看看這個查詢及輸出查詢結果中的部分**研究一下:
php code:
function search($query, $page) {
global $db, $bgcolor2, $bgcolor4, $sitename, $io_db, $module_url, $list_page_items, $hm_index;
$option = trim($option);
$query = trim($query);
$query = fixquotes(nl2br(filter_text($query)));
$db->escape_string($query);
$db->escape_string($option);
alpha_search($query);
...在這種情況下,我們通過使用$query這一值作為變數,然後使用htmlentities()這一函式:
php code:
$query = fixquotes(nl2br(filter_text(htmlentities($query))));
如果你對這三種函式還有有疑問可以使用php手冊來檢視:
如何測試XSS漏洞
黑盒手動測試 對於非富文字在輸入框中輸入特殊字元 提交 在提交後的頁面檢視源 根據關鍵字tiehua查詢源 中的tiehua前後的 是否已經被轉義成 apos 如果未被轉義說明這個輸入框存在xss漏洞的嫌疑 提交bug 對於富文字輸入框輸入 如果頁面有出現排版問題或者js錯誤說明這個輸入框存在xss...
我來教你如何尋找XSS漏洞
今天本來在看乙個站,偶然發現存在xss漏洞,就留意了下url形式,然後谷歌一下,就不費什麼力氣的得到了大量存在xss漏洞的站點頁面,正好今天閒來無事,我也得給我的部落格寫點東西,不然又要被搜尋引擎懲罰了 這裡,簡單說一下如何尋找xss漏洞,一般的,我在瀏覽 時,發現url中存在漢字或帶百分號的url...
PHP中 HTMLPurifier防XSS攻擊
htmlpurifier是我目前用過最好的php富文字html過濾器了,採用了白名單機制,有效杜絕了使用者提交表單中的非法html標籤,從而可以防止xss攻擊!配置方法記錄下來,以備工作中使用!param type string 要過濾的內容 return type description func...