亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2019年03月22日 14:12:13   作者:CODETC  
今天小編就為大家分享一篇關(guān)于PHP如何防止XSS攻擊與XSS攻擊原理的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

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信息、破壞頁面結(jié)構(gòu)、重定向到其它網(wǎng)站等。

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

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

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

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

  • (1).網(wǎng)頁不停地刷新 <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.com<meta 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,來開啟全局的Cookie的HttpOnly屬性,當(dāng)然也支持在代碼中來開啟:

<?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ù)來做為HttpOnly的選項(xiàng),開啟方法為:

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

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

總結(jié)

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

相關(guān)文章

最新評(píng)論