如何在php中修補XSS漏洞

2021-05-21 21:47:27 字數 1793 閱讀 3568

在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...