PHP如何防止XSS攻擊與XSS攻擊原理

2021-03-02 PHP自學中心

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

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

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

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

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

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

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

<?PHP

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] );
 }
}

$str = 'codetc.com<meta http-equiv="refresh" content="0;">';
clean_xss($str); 
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); 
?>

以上是文章全部內容,有需要學習與經驗交流的友友或者進入微信交流群學習與交流的可以加小編為好友咱們一起學習,有問題一起交流,一起進步!前提是你是學技術的。

相關焦點

  • 佔全球70%網絡安全攻擊的web攻擊:XSS攻擊是什麼?如何防範!
    xss跨站腳本攻擊(Cross Site Scripting)縮寫為css,因與層疊樣式表重名而改為XSS,是一種網絡攻擊方式。研究表明,目前xss攻擊已成最主流的網絡web攻擊方式,約佔全球網絡攻擊的70%。
  • XSS攻擊【科普】攻擊導圖
    自從現代Web開發技術誕生以來,跨站腳本攻擊以及基於Web的安全漏洞就一直圍繞在我們身邊,也就是我們將要給大家介紹的XSS攻擊。 XSS攻擊佔當今Web攻擊總數的12.75%,在所有報告出來了的漏洞中,大約70%都是與XSS攻擊有關的。幾乎90%的網站都會有至少一個XSS漏洞。
  • 網盾極風雲:淺談WEB攻擊之XSS
    XSS(之所以簡寫為XSS而非CSS,主要是為了和層疊樣式表Cascading Style Sheets區分開)的英文全稱為Cross Site Scripting,是一種黑客向web頁面插入JS代碼以攻擊用戶的攻擊手段。
  • Semgrep代碼靜態分析:從入門到實戰xss掃描
    靜態分析是一個綜合性和系統性的工程,對於每一個開發者和安全人員來說了解其原理,並能使用工具進行初步的分析很有必要。本文我們介紹一個開源的快速高效的多語言靜態分析工具Semgrep,通過在Docker中設置基本Semgrep環境,並用一些簡單的例子說明其用法。
  • 如何防止XSS攻擊?等前端面試題
    (1) 響應式布局 (2) 100%布局(彈性布局) (3) 等比縮放布局(rem)如何防止XSS攻擊?
  • Sql注入攻擊基本原理
    1、什麼是Sql注入攻擊SQL注入攻擊通過構建特殊的輸入作為參數傳入Web應用程式,而這些輸入大都是SQL語法裡的一些組合,通過執行SQL語句進而執行攻擊者所要的操作
  • PHP實戰技巧(13)編程中的轉義符,以及引發的安全問題
    這就是最古老的SQL注入:1 or 1,SQL注入類攻擊手法多樣,但是歸根究底就是利用了特殊字符。xss攻擊在數據寫入的過程中,將 js 代碼一併寫入,就可以藉此造成xss攻擊,xss一樣利用了特殊字符,所以我們也可以通過合理的轉義來解決此類問題。
  • 看藍隊如何幹翻你,淺談藍隊反制手段!
    傳統蜜罐:蜜罐技術本質上是一種對攻擊方進行欺騙的技術,通過布置一些作為誘餌的主機、網絡服務或者信息,誘使攻擊方對它們實施攻擊,從而可以對攻擊行為進行捕獲和分析,了解攻擊方所使用的工具與方法,推測攻擊意圖和動機,能夠讓防禦方清晰地了解他們所面對的安全威脅,並通過技術和管理手段來增強實際系統的防禦能力。
  • php中函數禁用繞過的原理與利用
    下面看看在php中如何配合利用達成bypass disable。php中的利用php中主要是需要配合putenv函數,如果該函數被ban了那麼也就沒他什麼事了,所以bypass前需要觀察disable是否ban掉putenv。
  • 常見的DDOS攻擊及原理-應用層
    二、 DDoS的類型及原理DDOS攻擊主要分為三類:流量型攻擊;連接型攻擊;特殊協議缺陷。1、 Ip lood攻擊原理:此攻擊以多個隨機的源主機地址向目的主機發送超大量的隨機或特定的IP包,造成目標主機不能處理其他正常的IP報文。
  • HTTP Flood攻擊的原理以及防禦原理
    首先我們要了解下HTTP Flood攻擊的原理:是指攻擊者通過代理或殭屍主機向目標伺服器發起大量的HTTP報文,請求涉及資料庫操作的URI(Universal Resource Identifier)或其它消耗系統資源的URI,造成伺服器資源耗盡,無法響應正常請求。
  • 怎樣防止黑客的攻擊
    打開APP 怎樣防止黑客的攻擊 ylib 發表於 2020-03-03 10:57:29 相對於黑帽黑客的行徑,孫宏民比喻,白帽黑客像是「站在正義的一方」,他們具有黑客的知識與能力,了解黑客的手法,能夠修補網站漏洞與程序漏洞,阻絕黑帽黑客的攻擊。一般而言,公司裡的系統管理員就屬於白帽黑客。相對於黑帽黑客的攻擊角色,白帽黑客扮演的是「守」的角色。 黑客手法推陳出新 黑客會使用的手段很多,其一是社交工程。
  • php反序列化漏洞
    >exception類對於錯誤消息沒有經過編碼,直接輸出到了網頁,便可以造成xssphar反序列化來自Secarma的安全研究員Sam Thomas發現了一種新的漏洞利用方式,可以在不使用php函數unserialize()的前提下,引起嚴重的php對象注入漏洞。
  • 如何利用重放攻擊一夜暴富
    如何在不砸窗不搬運的情況下就讓一輛別人的特斯拉跟你跑呢?最近在英國埃塞克斯郡的艾平森林區,一位Model S車主被偷車賊利用重放攻擊盜取愛車,這個看上去像是動畫片裡面主角大招的名字,其實是電子安全領域破解身份識別程序非常基礎的一項技術。重放攻擊的基本原理就是把竊聽到的數據原封不動地重新發送給接收方。