国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

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

2024-05-05 00:07:50
字體:
來源:轉載
供稿:網友

XSS又稱CSS,全稱Cross SiteScript(跨站腳本攻擊), XSS攻擊類似于SQL注入攻擊,是Web程序中常見的漏洞,XSS屬于被動式且用于客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當用戶瀏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶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攻擊的目的,如下圖:

PHP,XSS攻擊

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

<?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 ('"', "//", "'", "/", "..", "../", "./", "//" ), '', $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參數的設置,同樣也支持全局的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操作函數setcookie函數和setrawcookie函數也專門添加了第7個參數來做為HttpOnly的選項,開啟方法為:

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

老版本的PHP就不說了。沒企業用了吧。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 印江| 大兴区| 福建省| 铅山县| 辉南县| 石台县| 金坛市| 黑河市| 门源| 旬邑县| 恩施市| 永仁县| 武川县| 江北区| 长汀县| 益阳市| 雅江县| 庆阳市| 麦盖提县| 石家庄市| 葵青区| 亚东县| 雷山县| 邹城市| 缙云县| 玛多县| 洱源县| 晋中市| 纳雍县| 柳林县| 堆龙德庆县| 怀化市| 农安县| 小金县| 格尔木市| 宜城市| 东平县| 尚志市| 和静县| 佛冈县| 普兰店市|