欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

除了通過正常途徑輸入XSS攻擊字符外,還可以繞過JavaScript校驗,通過修改請求達到XSS攻擊的目的,如下圖:

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

<?PHP
/**
 * @param $string
 * @param $low 安全別級低
 */
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); //如果你把這個注釋掉,你就知道xss攻擊的厲害了
echo $str;
?>

PHP中的設置

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

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

設置其值為1或者TRUE,來開啟全局的Cookie的HttpOnly屬性,當然也支持在代碼中來開啟:

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

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

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

最新評論