成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Web安全

Pines_Cheng / 512人閱讀

摘要:跨站腳本攻擊的全稱是,意為跨站腳本攻擊,為了區(qū)別于而特意寫(xiě)成。這一攻擊方法也是很常見(jiàn)的攻擊之一,而且由于需要在寫(xiě)的時(shí)候特別注意,這一攻擊往往容易被忽略。隱蔽性高是這一攻擊最大的特點(diǎn)。

發(fā)布自Kindem的博客,歡迎大家轉(zhuǎn)載,但是要注意注明出處。另外,該文章收納在Kindem的個(gè)人的 IT 知識(shí)整理倉(cāng)庫(kù),歡迎 Star、Fork、投稿
老生常談的幾大經(jīng)典安全問(wèn)題 1. SQL注入

這一點(diǎn)可能都被說(shuō)爛了,只要是動(dòng)態(tài)網(wǎng)站,可以說(shuō)基本上第一個(gè)必須考慮的點(diǎn)就是SQL注入。

那什么是SQL注入呢,先舉一個(gè)例子吧:

這是一個(gè)典型的登錄場(chǎng)景:

--------------------------------
|  Username:                   |
--------------------------------
|  Password:                   |
--------------------------------

網(wǎng)站要求用戶輸入用戶名和密碼以登錄,這時(shí)候通常后端的SQL語(yǔ)句是:

select * from user_t where
    user_t.username = "..." and
    user_t.password = "...";

看起來(lái)好像沒(méi)有什么問(wèn)題,當(dāng)獲取到匹配用戶名和密碼的表項(xiàng)時(shí),判斷結(jié)果集的數(shù)量是否為1,再進(jìn)行一些其他的邏輯判斷,即可判定用戶成功登陸,但是吧,這樣會(huì)有一個(gè)問(wèn)題,如果后端代碼采用了字符串拼接,這里將出現(xiàn)一個(gè)致命的問(wèn)題:

比如我按照如下方式輸入:

--------------------------------
|  Username: John Kindem"; --  |
--------------------------------
|  Password: mypassword        |
--------------------------------

此時(shí)SQL語(yǔ)句就會(huì)變成:

select * from user_t where
    user_t.username = "John Kindem"; --" and
    user_t.password = "...";

整理一下,就會(huì)變成這樣:

select * from user_t where
    user_t.username = "John Kindem";
--" and user_t.password = "...";

可見(jiàn)原本密碼這一條件,直接被注釋掉了,而原來(lái)的SQL語(yǔ)句被提前結(jié)束了,這樣你隨意使用一個(gè)密碼就能登錄為站點(diǎn)任意一個(gè)用戶,是不是很恐怖,設(shè)想一下,假如這個(gè)框中包含有管理員用戶的登錄功能,這一條語(yǔ)句將毀掉多少數(shù)據(jù)......

所以這就是SQL注入,這一點(diǎn)往往是Web開(kāi)發(fā)中最危險(xiǎn)的一個(gè)點(diǎn),由于其往往與權(quán)限有關(guān),一旦被攻破就會(huì)導(dǎo)致數(shù)據(jù)庫(kù)遭到破壞或者是站點(diǎn)控制權(quán)的丟失。

SQL注入往往通過(guò)構(gòu)建特殊的輸入來(lái)進(jìn)行,這些特殊的輸入往往有以下的想法:

提前結(jié)束SQL語(yǔ)句

注釋掉SQL語(yǔ)句的一部分

使用布爾表達(dá)式構(gòu)造恒等式

在原有SQL語(yǔ)句中加入自己的插入、刪除、修改等SQL語(yǔ)句

SQL的防范其實(shí)也很好做,在現(xiàn)代的Web開(kāi)發(fā)中,往往遵循以下幾條規(guī)則開(kāi)發(fā)就能很好地避免被SQL注入:

不要隨意對(duì)SQL語(yǔ)句使用字符串拼接

使用預(yù)編譯的方法來(lái)使用SQL語(yǔ)句

對(duì)于后者,基本上所有的語(yǔ)言都支持這一點(diǎn),拿JavaScript來(lái)說(shuō):

// Nodejs 連接 MySQL 進(jìn)行查詢
connection.query("select * from student where id = ?", 5, () => {
    ...
});

這樣可以查詢到 student 表中 id = 5 的表項(xiàng)的所有信息,但同時(shí)能夠防范SQL注入,因?yàn)檫@樣的語(yǔ)句在使用之前就會(huì)被預(yù)編譯,你無(wú)法再隨意改變SQL語(yǔ)句的構(gòu)成。

2. XSS - 跨站腳本攻擊

XSS的全稱是 Cross Site Scripting,意為跨站腳本攻擊,為了區(qū)別于 CSS (Cascading Style Sheets) 而特意寫(xiě)成 XSS。這一攻擊方法也是很常見(jiàn)的Web攻擊之一,而且由于需要在寫(xiě) JavaScript 的時(shí)候特別注意,這一攻擊往往容易被忽略。

當(dāng)然隨著前端的發(fā)展,現(xiàn)在這一攻擊的防范方法往往都會(huì)被集成在框架中,比如 React、Vue 中,很多地方就集成了 XSS 防范,你在使用框架的時(shí)候,很多地方往往都不需要注意這一點(diǎn),框架往往幫你做了防護(hù)。

這里簡(jiǎn)單介紹一下 XSS,先舉一個(gè)例子:

現(xiàn)在有這樣一個(gè)博客網(wǎng)站:

寫(xiě)博客頁(yè)面提供一個(gè)富文本編輯器,用于給用戶寫(xiě)博客

看博客頁(yè)面獲取用戶寫(xiě)的博客,并且將富文本編輯器產(chǎn)生的html文本顯示在頁(yè)面上

那么,假如用戶在富文本編輯器上寫(xiě):

hello world

富文本編輯器的原理往往是將用戶輸入的內(nèi)容轉(zhuǎn)義成帶有格式的html文本并且輸出,很有可能它的輸出結(jié)果是這樣的:

hello world

想想看,如果這樣的一段文本,如果原封不動(dòng)地被顯示在看博客的頁(yè)面,會(huì)導(dǎo)致什么?

很顯然,其中的 script 標(biāo)簽中的內(nèi)容,將會(huì)直接被當(dāng)成腳本執(zhí)行,想想這會(huì)有很危險(xiǎn),有心的攻擊者可以利用這一漏洞,隨心所欲地寫(xiě)自己的攻擊腳本,比如獲取用戶的 cookie、進(jìn)行惡意請(qǐng)求、監(jiān)聽(tīng)用戶輸入等......

這就是 XSS,在平日寫(xiě) JavaScript 的過(guò)程中很容易就會(huì)產(chǎn)生這一的漏洞,XSS 的生效往往有兩個(gè)條件:

構(gòu)建惡意輸入,使得輸入中包含惡意的 JavaScript、html 代碼

頁(yè)面原有的代碼會(huì)將這些輸入不經(jīng)處理地直接當(dāng)成頁(yè)面、原有代碼的一部分

最簡(jiǎn)單的例子,就是網(wǎng)站直接將用戶的輸入作為輸出顯示在頁(yè)面上,再或者,站點(diǎn)中有一些 eval() 之類的函數(shù),能夠直接執(zhí)行用戶輸入......

當(dāng)然 XSS 的防范也不是不無(wú)方法可循,最重要的一點(diǎn)是:

永遠(yuǎn)不要信任用戶的輸入,如果需要將用戶的輸入用在頁(yè)面或者代碼中,一定要轉(zhuǎn)義

轉(zhuǎn)義這一點(diǎn),講的是針對(duì)那些能夠影響到原有代碼的特殊符號(hào),比如 <、> 等,這里給出一些常用的轉(zhuǎn)義規(guī)則:

---------------------
|    <    |  <   |
---------------------
|    >    |  >   |
---------------------
|    "    |  &  |
---------------------
|    "    |  " |
---------------------

進(jìn)行完轉(zhuǎn)義之后,這些字符會(huì)被當(dāng)成普通顯示的字符,而不是具有特殊意義的字符

3. CSRF - 跨站請(qǐng)求偽造

CSRF 全稱為 Cross Site Request Forgery,即跨域請(qǐng)求偽造。這一點(diǎn)攻擊往往容易被人一樓,在一些老一些的網(wǎng)站,基本上都沒(méi)有考慮到這一點(diǎn),就連百度、亞馬遜這一些大型網(wǎng)站,在 CSRF 被人大規(guī)模利用進(jìn)行攻擊之前甚至都沒(méi)有做這一方面的防范。隱蔽性高是這一攻擊最大的特點(diǎn)。

這一攻擊主要利用的是網(wǎng)站對(duì)用戶身份的絕對(duì)信任,CSRF 有一些難以理解,這里用一個(gè)例子簡(jiǎn)單地說(shuō)清楚:

舉一個(gè)例子,現(xiàn)在這里有一個(gè)網(wǎng)購(gòu)網(wǎng)站,一般來(lái)說(shuō),往往當(dāng)用戶登錄之后,驗(yàn)證了身份后,站點(diǎn)在一次會(huì)話結(jié)束前,都是信任用戶的,也就是說(shuō),站點(diǎn)相信用戶是本人,但是吧,現(xiàn)在有這樣一次操作:

用戶先登錄了網(wǎng)購(gòu)網(wǎng)站

用戶沒(méi)有關(guān)閉網(wǎng)購(gòu)網(wǎng)站的標(biāo)簽頁(yè),打開(kāi)了另外一個(gè)網(wǎng)站

那一個(gè)網(wǎng)站是一個(gè)惡意網(wǎng)站,登錄那個(gè)網(wǎng)站的一刻,它向網(wǎng)購(gòu)網(wǎng)站發(fā)送了一個(gè)購(gòu)買物品請(qǐng)求

現(xiàn)在想一想,會(huì)出現(xiàn)什么問(wèn)題?由于用戶沒(méi)有關(guān)閉網(wǎng)購(gòu)網(wǎng)站的標(biāo)簽頁(yè),上一次會(huì)話并沒(méi)有結(jié)束,惡意網(wǎng)站發(fā)送的請(qǐng)求的 cookie 中將會(huì)帶有與上一次會(huì)話相同的 sessionId,也就是說(shuō)在網(wǎng)購(gòu)網(wǎng)站的那一端將會(huì)認(rèn)為這一次請(qǐng)求任然是用戶的請(qǐng)求,所以會(huì)欣然接受。

是不是很可怕?你明明沒(méi)有做任何操作,你的一切卻已經(jīng)屬于了別人。很多時(shí)候,被 CSRF 攻擊之后,用戶往往都不知道發(fā)生了什么,自己的錢包就空了。CSRF 最可怕的地方就在于這里,它的攻擊目標(biāo)往往不是站點(diǎn),而是站點(diǎn)的用戶,再者,它的隱蔽性也讓人忌憚。

CSRF 的防范,也是有規(guī)律可循的,最重要的一點(diǎn)是,站點(diǎn)永遠(yuǎn)不要信任任何一個(gè)用戶,需要對(duì)用戶進(jìn)行時(shí)刻驗(yàn)證,一般來(lái)說(shuō)現(xiàn)在都是這樣操作的:

在每一次請(qǐng)求中,都帶著雙方按照一定約定產(chǎn)生的一個(gè)隨機(jī) Token,這一個(gè) Token 可以通過(guò)公鑰加密或者其他的方法產(chǎn)生,Token 驗(yàn)證通過(guò)了才說(shuō)明是用戶本人

一些危害相對(duì)較小的攻擊 1. 靜態(tài)資源枚舉

在平時(shí)我們的開(kāi)發(fā)中,往往靜態(tài)資源的命名都是有規(guī)律的,比如吧,一些同一頁(yè)面引用的js腳本,會(huì)被我們?nèi)绱嗣?/p>

index-script-1.js

index-script-2.js

index-script-3.js

...

同樣的,圖片、CSS 文件都會(huì)像這樣命名,有心人就可以寫(xiě)一個(gè)腳本,遍歷整個(gè)站點(diǎn)目錄,獲取一些文件。當(dāng)然,這些靜態(tài)文件給他也無(wú)妨,畢竟你摁 F12 也是一樣的效果......

但是設(shè)想一下,假如站點(diǎn)文件服務(wù)器上有一些特殊的文件,比如哪一個(gè)傻傻的開(kāi)發(fā)者使用 bak 格式備份了某一個(gè)后端文件,但是忘了刪除然后一直存在了服務(wù)器上,比如:

index-backend.php.bak

index-login-backend.php.bak

這些文件要是給弄到了,相當(dāng)于網(wǎng)站的后端邏輯直接暴露在了用戶面前,有心人就可以通過(guò)這些文件來(lái)分析獲取該站點(diǎn)的一些漏洞。

總的來(lái)說(shuō)危害還是不大,但是平日里一定要注意:

不要把任何后端有關(guān)的文件仍在服務(wù)器上

文件使用 UUID 或者其他方法隨機(jī)命名使之沒(méi)有規(guī)律,加大枚舉難度

2. 跨域問(wèn)題和訪問(wèn)控制

跨域問(wèn)題,自如其名,就是在站點(diǎn)域外獲取站點(diǎn)的服務(wù),這樣的危害其實(shí)不是很大,因?yàn)檎军c(diǎn)一般都有訪問(wèn)控制,每一個(gè)身份都有自己能做的事情和不能做的事情,而且一般來(lái)說(shuō),瀏覽器和框架對(duì)這一攻擊都有著嚴(yán)格的防范,基本上來(lái)說(shuō),非本域下的請(qǐng)求基本上不可能成功。

但是吧這里還是提一句吧,還是以一個(gè)例子來(lái)說(shuō)明:

假如我得知了一個(gè)站點(diǎn)的注冊(cè)用戶的請(qǐng)求 url 和其參數(shù)列表,并且我發(fā)現(xiàn)它沒(méi)有設(shè)定訪問(wèn)控制和非本域請(qǐng)求禁止

我直接直接寫(xiě)一個(gè)腳本,按照它的格式瘋狂發(fā)送 http 請(qǐng)求,或者說(shuō)操控一大批傀儡機(jī),不斷注冊(cè),影響站點(diǎn)的正常工作

雖然一般是不太可能成功的......但是我們還是假設(shè)站點(diǎn)真的傻到這種地步

跨域問(wèn)題一般通過(guò)使用 http response header 中的 Access-Control-Allow-Origin 來(lái)防范,這一字段可以聲明該 response 允許的域,比如:

Access-Control-Allow-Origin: www.kindemh.cn

那么非本域的所有請(qǐng)求,就算你請(qǐng)求了,你也無(wú)法獲取到 response

這里值得一提的是,在現(xiàn)代開(kāi)發(fā)中,我們往往會(huì)使用 Ajax 技術(shù)來(lái)發(fā)送異步請(qǐng)求,但是實(shí)際上,如果你使用 Ajax 技術(shù),十有八九都會(huì)因?yàn)榭缬蛳拗票粩r截,這時(shí)候你就需要使用上述字段來(lái)允許你自己的服務(wù)。所以說(shuō)這一點(diǎn)其實(shí)本來(lái)沒(méi)多大危害,要說(shuō)真正的危害,還是對(duì)你的開(kāi)發(fā)效率會(huì)造成一定的影響。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96609.html

相關(guān)文章

  • 離大廠近一點(diǎn)《阿里巴巴集團(tuán)Web安全測(cè)試規(guī)范》獨(dú)家版

    摘要:今天,我們就離大廠更近一點(diǎn),共同學(xué)習(xí)阿里這份阿里巴巴集團(tuán)安全測(cè)試規(guī)范阿里巴巴集團(tuán)安全測(cè)試規(guī)范阿里巴巴集團(tuán)安全測(cè)試規(guī)范背景簡(jiǎn)介為了規(guī)避安全風(fēng)險(xiǎn)規(guī)范代碼的安全開(kāi)發(fā),以及如何系統(tǒng)的進(jìn)行安全性測(cè)試,目前缺少相應(yīng)的理論和方法支撐。 很多人都知道,在學(xué)校學(xué)的技術(shù),初創(chuàng)公司的技術(shù),外包公司的技術(shù),自研公司...

    wudengzan 評(píng)論0 收藏0
  • #WEB安全基礎(chǔ) : HTML/CSS | 文章索引

    摘要:黑體本系列講解安全所需要的和黑體安全基礎(chǔ)我的第一個(gè)網(wǎng)頁(yè)黑體安全基礎(chǔ)初識(shí)黑體安全基礎(chǔ)初識(shí)標(biāo)簽黑體安全基礎(chǔ)文件夾管理網(wǎng)站黑體安全基礎(chǔ)模塊化黑體安全基礎(chǔ)嵌套列表黑體安全基礎(chǔ)標(biāo)簽拓展和屬性的使用黑體安全基礎(chǔ)嵌套本系列講解WEB安全所需要的HTML和CSS #WEB安全基礎(chǔ) : HTML/CSS | 0x0 我的第一個(gè)網(wǎng)頁(yè) #WEB安全基礎(chǔ) : HTML/CSS | 0x1初識(shí)CSS #WEB安全基...

    EscapedDog 評(píng)論0 收藏0
  • UCloud 開(kāi)啟負(fù)載均衡+WAF一鍵聯(lián)動(dòng),云原生能力賦能Web防護(hù)創(chuàng)新模式

    摘要:為使用七層負(fù)載均衡的用戶,提供安全高效的應(yīng)用防護(hù)能力?;谪?fù)載均衡集群的運(yùn)維能力,可快速進(jìn)行擴(kuò)容容災(zāi)遷移的部署。伴隨著互聯(lián)網(wǎng)+時(shí)代的到來(lái),Web系統(tǒng)作為企業(yè)IT業(yè)務(wù)的基本負(fù)載平臺(tái),承載著各種不同種類的信息業(yè)務(wù)。但近年來(lái)針對(duì)Web應(yīng)用的攻擊事件頻發(fā),也讓W(xué)eb應(yīng)用的安全防御面臨著諸多挑戰(zhàn)。國(guó)家互聯(lián)網(wǎng)應(yīng)急中心報(bào)告就曾顯示,僅2020上半年國(guó)家信息安全漏洞共享平臺(tái)(CNVD)收錄通用型安全漏洞11...

    Tecode 評(píng)論0 收藏0
  • 信息安全入門指南

    摘要:以下所列出的鏈接均為在線文檔,有志于信息安全的愛(ài)好者可由此作為入門指南。 以下所列出的鏈接均為在線文檔,有志于信息安全的愛(ài)好者可由此作為入門指南。 常規(guī)知識(shí) Sun認(rèn)證-Solaris 9&10安全管理員學(xué)習(xí)指南 PicoCTF資料 應(yīng)用軟件安全 OWASP安全編碼規(guī)范 漏洞挖掘 Windows ISV軟件安全防御 移動(dòng)安全 OWASP十大移動(dòng)手機(jī)安全風(fēng)險(xiǎn) 網(wǎng)...

    jay_tian 評(píng)論0 收藏0
  • clojure的web安全比你想象的還要差

    摘要:的安全比你想象的還要差大會(huì)結(jié)束了,發(fā)表了題為的演說(shuō)。宣稱,根據(jù)可供選擇的類庫(kù)來(lái)倒騰你自己的棧,這種思想方法導(dǎo)致了系統(tǒng)級(jí)的安全問(wèn)題。對(duì)于而言,安全的會(huì)話管理只有非常少量的被證明過(guò)的最佳實(shí)踐。安全頭在應(yīng)用程序,沒(méi)有集中的類庫(kù)來(lái)居中管理安全頭。 Clojure的web安全比你想象的還要差 ClojureWest大會(huì)結(jié)束了,Aaron Bedra發(fā)表了題為 Clojure.web/with-...

    opengps 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<