主頁(yè) > 知識(shí)庫(kù) > PHP如何防止XSS攻擊與XSS攻擊原理的講解

PHP如何防止XSS攻擊與XSS攻擊原理的講解

熱門標(biāo)簽:服務(wù)器配置 阿里云 團(tuán)購(gòu)網(wǎng)站 銀行業(yè)務(wù) 科大訊飛語(yǔ)音識(shí)別系統(tǒng) Linux服務(wù)器 Mysql連接數(shù)設(shè)置 電子圍欄

XSS又稱CSS,全稱Cross SiteScript(跨站腳本攻擊), XSS攻擊類似于SQL注入攻擊,是Web程序中常見的漏洞,XSS屬于被動(dòng)式且用于客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網(wǎng)站中輸入(傳入)惡意的HTML代碼,當(dāng)用戶瀏覽該網(wǎng)站時(shí),這段HTML代碼會(huì)自動(dòng)執(zhí)行,從而達(dá)到攻擊的目的。如,盜取用戶Cookie信息、破壞頁(yè)面結(jié)構(gòu)、重定向到其它網(wǎng)站等。

理論上,只要存在能提供輸入的表單并且沒做安全過濾或過濾不徹底,都有可能存在XSS漏洞。

下面是一些最簡(jiǎn)單并且比較常見的惡意字符XSS輸入:

1.XSS 輸入通常包含 JavaScript 腳本,如彈出惡意警告框:script>alert("XSS");/script>

2.XSS 輸入也可能是 HTML 代碼段,譬如:

  • (1).網(wǎng)頁(yè)不停地刷新 meta http-equiv="refresh" content="0;">
  • (2).嵌入其它網(wǎng)站的鏈接 iframe src=http://xxxx width=250 height=250>/iframe>

除了通過正常途徑輸入XSS攻擊字符外,還可以繞過JavaScript校驗(yàn),通過修改請(qǐng)求達(dá)到XSS攻擊的目的,如下圖:

了解到XSS攻擊的原理和危害后,其實(shí)要預(yù)防也不難,下面提供一個(gè)簡(jiǎn)單的PHP防止XSS攻擊的函數(shù):

?PHP
/**
 * @param $string
 * @param $low 安全別級(jí)低
 */
function clean_xss($string, $low = False)
{
 if (! is_array ( $string ))
 {
 $string = trim ( $string );
 $string = strip_tags ( $string );
 $string = htmlspecialchars ( $string );
 if ($low)
 {
  return True;
 }
 $string = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "http://" ), '', $string );
 $no = '/%0[0-8bcef]/';
 $string = preg_replace ( $no, '', $string );
 $no = '/%1[0-9a-f]/';
 $string = preg_replace ( $no, '', $string );
 $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
 $string = preg_replace ( $no, '', $string );
 return True;
 }
 $keys = array_keys ( $string );
 foreach ( $keys as $key )
 {
 clean_xss ( $string [$key] );
 }
}
//just a test
$str = 'codetc.commeta http-equiv="refresh" content="0;">';
clean_xss($str); //如果你把這個(gè)注釋掉,你就知道xss攻擊的厲害了
echo $str;
?>

PHP中的設(shè)置

PHP5.2以上版本已支持HttpOnly參數(shù)的設(shè)置,同樣也支持全局的HttpOnly的設(shè)置,在php.ini中

-----------------------------------------------------
session.cookie_httponly = 
-----------------------------------------------------

設(shè)置其值為1或者TRUE,來(lái)開啟全局的Cookie的HttpOnly屬性,當(dāng)然也支持在代碼中來(lái)開啟:

?php ini_set("session.cookie_httponly", 1);  
// or session_set_cookie_params(0, NULL, NULL, NULL, TRUE);  
?>

Cookie操作函數(shù)setcookie函數(shù)和setrawcookie函數(shù)也專門添加了第7個(gè)參數(shù)來(lái)做為HttpOnly的選項(xiàng),開啟方法為:

?php 
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);  
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 
?>

老版本的PHP就不說(shuō)了。沒企業(yè)用了吧。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

您可能感興趣的文章:
  • JWT + ASP.NET MVC時(shí)間戳防止重放攻擊詳解
  • .NET添加時(shí)間戳防止重放攻擊
  • PHP中防止SQL注入攻擊和XSS攻擊的兩個(gè)簡(jiǎn)單方法
  • php防止CC攻擊代碼 php防止網(wǎng)頁(yè)頻繁刷新
  • php防止sql注入示例分析和幾種常見攻擊正則表達(dá)式
  • php實(shí)現(xiàn)cc攻擊防御和防止快速刷新頁(yè)面示例
  • php防止網(wǎng)站被攻擊的應(yīng)急代碼
  • PHP中通過語(yǔ)義URL防止網(wǎng)站被攻擊的方法分享
  • PHP實(shí)現(xiàn)的防止跨站和xss攻擊代碼【來(lái)自阿里云】
  • 淺析PHP程序防止ddos,dns,集群服務(wù)器攻擊的解決辦法
  • PHP防止注入攻擊實(shí)例分析
  • PHP基于timestamp和nonce實(shí)現(xiàn)的防止重放攻擊方案分析

標(biāo)簽:衡水 廣元 大理 江蘇 蚌埠 衢州 棗莊 萍鄉(xiāng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP如何防止XSS攻擊與XSS攻擊原理的講解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266