成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么在React中防范XSS攻擊

本篇內(nèi)容介紹了“怎么在React中防范XSS攻擊”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

本篇內(nèi)容介紹了“怎么在React中防范XSS攻擊”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

按需網(wǎng)站設(shè)計(jì)可以根據(jù)自己的需求進(jìn)行定制,網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)構(gòu)思過程中功能建設(shè)理應(yīng)排到主要部位公司網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)的運(yùn)用實(shí)際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實(shí)際意義

跨站點(diǎn)腳本(XSS)攻擊是一種將惡意代碼注入網(wǎng)頁(yè)然后執(zhí)行的攻擊。這是前端Web開發(fā)人員必須應(yīng)對(duì)的最常見的網(wǎng)絡(luò)攻擊形式之一,因此了解攻擊的工作原理和防范方法非常重要。

在本文中,我們將查看幾個(gè)用React編寫的代碼示例,這樣您也可以保護(hù)您的站點(diǎn)和用戶。

示例1:React中成功的XSS攻擊


對(duì)于我們所有的示例,我們將實(shí)現(xiàn)相同的基本功能。我們將在頁(yè)面上有一個(gè)搜索框,用戶可以在其中輸入文本。點(diǎn)擊“Go”按鈕將模擬運(yùn)行搜索,然后一些確認(rèn)文本將顯示在屏幕上,并向用戶重復(fù)他們搜索的術(shù)語。這是任何允許你搜索的網(wǎng)站的標(biāo)準(zhǔn)行為。

很簡(jiǎn)單,對(duì)吧?會(huì)出什么問題呢?

好吧,如果我們?cè)谒阉骺蛑休斎胍恍〩TML怎么辦?讓我們嘗試以下代碼段:

<img src="1" onerror="alert('Gotcha!')" />


現(xiàn)在會(huì)發(fā)生什么?


哇,onerror 事件處理程序已執(zhí)行!那不是我們想要的!我們只是不知不覺地從不受信任的用戶輸入中執(zhí)行了腳本。

然后,破碎的圖像將呈現(xiàn)在頁(yè)面上,那也不是我們想要的。

那么我們是怎么到這里的呢?好吧,在本例中渲染搜索結(jié)果的JSX中,我們使用了以下代碼:

<p style={searchResultsStyle}>You searched for: <b><span dangerouslySetInnerHTML={{ __html: this.state.submittedSearch }} /></b></p>

用戶輸入被解析和渲染的原因是我們使用了 dangerouslySetInnerHTML 屬性,這是React中的一個(gè)特性,它的工作原理就像原生的 innerHTML 瀏覽器API一樣,由于這個(gè)原因,一般認(rèn)為使用這個(gè)屬性是不安全的。

示例2:React中的XSS攻擊失敗

現(xiàn)在,讓我們看一個(gè)成功防御XSS攻擊的示例。這里的修復(fù)方法非常簡(jiǎn)單:為了安全地渲染用戶輸入,我們不應(yīng)該使用 dangerouslySetInnerHTML 屬性。相反,讓我們這樣編寫輸出代碼:

<p style={searchResultsStyle}>You searched for: <b>{this.state.submittedSearch}</b></p>

我們將輸入相同的輸入,但這一次,這里是輸出:

很好!用戶輸入的內(nèi)容在屏幕上只呈現(xiàn)為文字,威脅已被解除。

這是個(gè)好消息!React默認(rèn)情況下會(huì)對(duì)渲染的內(nèi)容進(jìn)行轉(zhuǎn)義處理,將所有的數(shù)據(jù)都視為文本字符串處理,這相當(dāng)于使用原生 textContent 瀏覽器API。

示例3:在React中清理HTML內(nèi)容

所以,這里的建議似乎很簡(jiǎn)單。只要不要在你的React代碼中使用dangerouslySetInnerHTML 你就可以了。但如果你發(fā)現(xiàn)自己需要使用這個(gè)功能呢?

例如,也許您正在從諸如Drupal之類的內(nèi)容管理系統(tǒng)(CMS)中提取內(nèi)容,而其中某些內(nèi)容包含標(biāo)記。(順便說一句,我可能一開始就不建議在文本內(nèi)容和來自CMS的翻譯中包含標(biāo)記,但對(duì)于本例,我們假設(shè)您的意見被否決了,并且?guī)в袠?biāo)記的內(nèi)容將保留下來。)

在這種情況下,您確實(shí)想解析HTML并將其呈現(xiàn)在頁(yè)面上。那么,您如何安全地做到這一點(diǎn)?

答案是在渲染HTML之前對(duì)其進(jìn)行清理。與完全轉(zhuǎn)義HTML不同,在渲染之前,您將通過一個(gè)函數(shù)運(yùn)行內(nèi)容以去除任何潛在的惡意代碼。

您可以使用許多不錯(cuò)的HTML清理庫(kù)。和任何與網(wǎng)絡(luò)安全有關(guān)的東西一樣,最好不要自己寫這些東西。有些人比你聰明得多,不管他們是好人還是壞人,他們比你考慮得更多,一定要使用久經(jīng)考驗(yàn)的解決方案。

我最喜歡的清理程序庫(kù)之一稱為sanitize-html,它的功能恰如其名。您從一些不干凈的HTML開始,通過一個(gè)函數(shù)運(yùn)行它,然后得到一些漂亮、干凈、安全的HTML作為輸出。如果您想要比它們的默認(rèn)設(shè)置提供更多的控制,您甚至可以自定義允許的HTML標(biāo)記和屬性。

本文標(biāo)題:怎么在React中防范XSS攻擊
網(wǎng)頁(yè)地址:http://jinyejixie.com/article36/ioossg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站排名網(wǎng)站維護(hù)、電子商務(wù)商城網(wǎng)站、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
青龙| 奉化市| 通榆县| 武功县| 黑龙江省| 济南市| 兴业县| 遵义县| 高雄市| 大荔县| 泸州市| 栾川县| 怀远县| 昌都县| 台前县| 时尚| 理塘县| 五大连池市| 丁青县| 枣阳市| 鄂托克旗| 福海县| 中牟县| 波密县| 呼和浩特市| 囊谦县| 集贤县| 太湖县| 六安市| 南昌市| 上栗县| 遂昌县| 封丘县| 上饶县| 浮梁县| 林西县| 安吉县| 安福县| 松江区| 军事| 旅游|