成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在Node.js中防范跨站腳本攻擊

譯文 精選
安全 應用安全
文將向您簡單介紹跨站點腳本(XSS)攻擊的基本原理,以及如何在Node.js中防范此類攻擊。

譯者 | 陳峻

審校 | 孫淑娟

作為一種安全漏洞,跨站點腳本(Cross-site scripting,XSS)是指攻擊者使用客戶端的代碼,在目標網站上注入惡意腳本的一種方式。由于攻擊者可以使用它來冒充用戶、訪問敏感數據,甚至更改網站的頁面內容,因此它對用戶、站點構成了嚴重的威脅。

截至2021年,此類風險在25個最危險的常見漏洞列表中排名第二。對此,我們往往需要在創建與維護網站時,事先對其有充分的了解,并做好相應的防范。

1.跨站點腳本的工作原理 

在了解跨站點腳本的工作原理之前,讓我們先來了解同源策略(same-origin policy,SOP)的含義。SOP是一種安全機制策略,它能夠限制一個網站(一個來源)去讀取或寫入另一個網站(其他來源)。因此,它可以從根源上防止惡意網站向受信任的網站發送惡意代碼。

跨站點腳本攻擊通常會利用瀏覽器無法區分合法HTML和惡意代碼的特點,來繞過同源策略。例如,攻擊者可以直接將JavaScript代碼注入目標網站。而一旦用戶的瀏覽器執行此類代碼,那么攻擊者便可以獲取針對會話令牌、Cookie和其他敏感數據的訪問權限。

目前,攻擊者往往會使用反射、存儲和基于DOM三種類型的跨站點腳本,對目標網站開展攻擊。

2.反射型XSS 

反射型XSS是將JavaScript直接注入用戶的輸入字段。此類JavaScript可能是Echo、重定向或Cookie收集器。例如,攻擊者將腳本插入到目標的搜索詞中,產生諸如搜索結果等,針對獲取數據庫數據的請求。一旦目標客戶端提交了此類查詢,那么被注入其中的腳本就會立即被觸發執行。例如,在用戶搜索期間,攻擊者可能會插入一個響應表單的JavaScript,要求受害者輸入他們的密碼或用戶名。那么一旦用戶認為這是來自原始站點的請求,并跟著操作,就可能在不知不覺中將其信任憑據提交給了攻擊者。有時,攻擊者還可以使用腳本,將用戶從易受攻擊的頁面,重定向到惡意構建的頁面上,同樣以提交表單的方式,套取信任憑據。

3.存儲型XSS 

與反射型XSS不同,存儲型XSS以易受攻擊網站的整個用戶群為目標。攻擊者通過將腳本存儲在網站的數據庫中,在頁面加載時,觸發存儲腳本的持久執行,從而對網站的整體完整性產生影響。

4.基于DOM的XSS 

存儲和反射型XSS往往以網站上的服務器端請求為目標,而基于DOM的XSS則是以運行時的活動為目標。它通過將腳本插入到執行特定任務的網站組件中,以改變其原始意圖。此類組件通常會執行更改網站元素等,與DOM相關的任務,讓網頁變得反應異常。

5.如何防范Node中的跨站點腳本 

您通常可以采取如下步驟,來防范Node.js中的跨站點腳本:

凈化輸入

由于攻擊者必須能夠將數據發送到目標Web應用,并將其推送給用戶,才能執行XSS攻擊,因此,您需要采取的第一種預防措施便是:對所有從用戶處輸入到Web應用的數據予以凈化。它可以保證服務器端在根據用戶輸入執行后續操作之前,檢測并剔除各種虛假、惡意的“臟”數據。您既可以手動執行此類操作,也可以使用驗證器(validator)之類的工具,來加快整體的處理速度。如下代碼段所示,您可以使用驗證器來轉義用戶輸入中的HTML標簽:

importvalidatorfrom"validator";
letuserInput=`Jane<scriptonload="alert('XSShack');"></script>`;
letsanitizedInput=validator.escape(userInput);

一旦您運行了上述代碼,其凈化后的輸出結果為如下:

Jane<scriptonload="alert(&#x27;XSShack&#x27;);"><&#x2F;script>

限制用戶的輸入

通過驗證來限制用戶在表單中可以提交的輸入類型。例如,如果您提供一個電子郵件的輸入字段,那么就只允許用戶輸入正常的電子郵件格式。據此,您可以最大限度地減少攻擊者提交不良數據的可能。當然,您也可以在此使用驗證器的相關代碼包。

實施HTTP-only的Cookie策略

在瀏覽器中,Cookie會將數據存儲在本地的緩存中,并通過HTTP的方式,將其發送回服務器。不過,它們也很容易成為被攻擊的目標。攻擊者完全可以使用JavaScript,通過瀏覽器去訪問它們。

HTTP-only的Cookie是防止客戶端腳本去訪問Cookie里的數據的一種策略。也就是說,即使您的Web應用包含有可被攻擊者利用的漏洞,他們也無法據此訪問到Cookie。下面是如何使用Express在Node.js中,實現HTTP-only的Cookie策略的示例:

app.use(express.session({
secret: "secret",
cookie: {
httpOnly: true,
secure: true
}
}))

如上述代碼段所示,如果攻擊者試圖去訪問某個已經將httpOnly標簽設置為true的Cookie,那么他們只能收到一個空的字符串。

6.小結 

常言道:知易行難。大多數Web應用運維者都知道網站安全的重要性,但是在實施過程中往往會碰到各種復雜的狀況。在上文中,我向您簡單介紹了跨站點腳本攻擊的基本原理,以及如何在Node.js中防范此類攻擊。希望上述內容能夠給您的網站加固實踐提供幫助。

原文鏈接:https://www.makeuseof.com/prevent-cross-site-scripting-in-nodejs/

譯者介紹

陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗;持續以博文、專題和譯文等形式,分享前沿技術與新知;經常以線上、線下等方式,開展信息安全類培訓與授課。

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2010-06-30 16:26:05

2012-11-15 09:51:36

2020-12-21 09:40:06

腳本攻擊XSS漏洞

2021-07-30 11:20:53

JavaScriptNode.jsWeb Develop

2010-06-07 20:19:49

2013-01-11 17:33:46

2022-11-17 09:52:12

RHEL 9Node.js

2020-08-05 08:31:51

SSL TLSNode.js

2009-03-09 17:19:53

2011-09-09 14:23:13

Node.js

2017-06-14 16:08:31

2010-09-10 14:13:11

2010-09-09 11:19:10

2010-09-27 17:37:10

2020-08-24 08:07:32

Node.js文件函數

2021-05-18 09:01:39

Node.jsJSON文件

2021-07-15 10:15:52

Node.jsJSON前端

2021-10-25 09:00:37

Node.jsJS前端

2015-02-01 09:26:10

2020-01-03 16:04:10

Node.js內存泄漏
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产aⅴ爽av久久久久久久 | 久久日韩精品一区二区三区 | 亚洲在线一区 | 国产精品夜夜春夜夜爽久久电影 | 久久久噜噜噜www成人网 | a免费视频| 黄色av大片 | 国产视频一区二区 | 99视频在线免费观看 | 中文字幕在线观看一区 | 青青草久久 | 福利久久 | 99精品免费久久久久久日本 | 国产精品久久 | 国产欧美在线播放 | 亚洲精品第一 | 在线只有精品 | 中文字幕高清在线 | 国产精品欧美一区二区 | 国产精品亚洲成在人线 | 99视频在线免费观看 | 亚洲美女视频 | 久久久女女女女999久久 | 亚洲福利精品 | av影音| 亚洲成av人片在线观看 | 国产91在线 | 欧美 | 免费v片在线观看 | 国产视频在线一区二区 | 亚洲精品一区二区 | 色婷婷久久久久swag精品 | 在线成人福利 | 久久国产精品免费一区二区三区 | www日本在线观看 | 成人亚洲网站 | 午夜婷婷激情 | 91精品久久久久久久久久入口 | 日韩有码在线观看 | 黄色日本片 | 亚洲精品视频在线播放 | 午夜精品一区二区三区在线观看 |