摘要:跨站腳本攻擊,,為了和前端的避免重名,簡(jiǎn)稱為,是指通過(guò)技術(shù)手段,向正常用戶請(qǐng)求的頁(yè)面中插入惡意腳本,執(zhí)行。這種攻擊主要是用于信息竊取和破壞等目的。防范的漏洞方式驗(yàn)證,利用瀏覽器的同源限制,在接口執(zhí)行前驗(yàn)證中的,驗(yàn)證通過(guò)才會(huì)繼續(xù)執(zhí)行請(qǐng)求。
相信大家在各種技術(shù)文章都看到過(guò)SQL注入、XSS和CSRF這三個(gè)名詞,但是我覺(jué)得有一部分人可能并不清楚這三個(gè)詞的真正含義。接下來(lái),我就說(shuō)下這三個(gè)名詞的含義,希望對(duì)大家能有所幫助。
SQL注入
SQL注入是屬于注入式攻擊,這種攻擊是因?yàn)樵陧?xiàng)目中沒(méi)有將代碼與數(shù)據(jù)(比如用戶敏感數(shù)據(jù))隔離,在讀取數(shù)據(jù)的時(shí)候,錯(cuò)誤的將數(shù)據(jù)作為代碼的一部分執(zhí)行而導(dǎo)致的。
典型的例子就是當(dāng)對(duì)SQL語(yǔ)句進(jìn)行字符串拼接的時(shí)候,直接使用未轉(zhuǎn)義的用戶輸入內(nèi)容作為變量。這時(shí),只要在sql語(yǔ)句的中間做修改,比如加上drop、delete等關(guān)鍵字,執(zhí)行之后后果不堪設(shè)想。
說(shuō)到這里,那么該怎么處理這種情況呢?三個(gè)方面:
1、過(guò)濾用戶輸入?yún)?shù)中的特殊字符,降低風(fēng)險(xiǎn)。
2、禁止通過(guò)字符串拼接sql語(yǔ)句,要嚴(yán)格使用參數(shù)綁定來(lái)傳入?yún)?shù)。
3、合理使用數(shù)據(jù)庫(kù)框架提供的機(jī)制。就比如Mybatis提供的傳入?yún)?shù)的方式 #{},禁止使用${},后者相當(dāng)于是字符串拼接sql,要使用參數(shù)化的語(yǔ)句。
總結(jié)下,就是要正確使用參數(shù)化綁定sql變量。
XSS
XSS:跨站腳本攻擊,Cross-Site Scripting,為了和前端的css避免重名,簡(jiǎn)稱為XSS,是指通過(guò)技術(shù)手段,向正常用戶請(qǐng)求的HTML頁(yè)面中插入惡意腳本,執(zhí)行。
這種攻擊主要是用于信息竊取和破壞等目的。比如2011年的微博XSS攻擊事件,攻擊者利用了微博發(fā)布功能中未對(duì)action-data漏洞做有效的過(guò)濾,在發(fā)布微博信息的時(shí)候帶上了包含攻擊腳本的URL,用戶訪問(wèn)就會(huì)加載惡意腳本,導(dǎo)致大量用戶被攻擊。
關(guān)于防范XSS上,主要就是通過(guò)對(duì)用戶輸入的數(shù)據(jù)做過(guò)濾或者是轉(zhuǎn)義,可以使用框架提供的工具類HtmlUtil。另外前端在瀏覽器展示數(shù)據(jù)的時(shí)候,要使用安全的API展示數(shù)據(jù)。比如使用innerText而不是innerHTML。
CSRF
跨站請(qǐng)求偽造,在用戶并不知情的情況下,冒充用戶發(fā)送請(qǐng)求,在當(dāng)前已經(jīng)登錄的web網(wǎng)站上執(zhí)行惡意操作,比如惡意發(fā)帖,修改密碼等。
大致來(lái)看,與XSS有重合的地方,前者是黑客盜用用戶瀏覽器中的登錄信息,冒充用戶去執(zhí)行操作。后者是在正常用戶請(qǐng)求的HTML中放入惡意代碼,XSS問(wèn)題出在用戶數(shù)據(jù)沒(méi)有轉(zhuǎn)義,過(guò)濾;CSRF問(wèn)題出現(xiàn)在HTTP接口沒(méi)有防范不守信用的調(diào)用。
防范CSRF的漏洞方式:
1、CSRF Token驗(yàn)證,利用瀏覽器的同源限制,在HTTP接口執(zhí)行前驗(yàn)證Cookie中的Token,驗(yàn)證通過(guò)才會(huì)繼續(xù)執(zhí)行請(qǐng)求。
2、人機(jī)交互,例如短信驗(yàn)證碼、界面的滑塊。
之前在會(huì)議上也有一個(gè)思考,在人機(jī)驗(yàn)證這塊,如果不用驗(yàn)證碼的方式,用界面上的滑塊這種方式,而且滑塊還是第三方的。在APP的注冊(cè)、登錄使用這種人機(jī)驗(yàn)證的方式的話,如果第三方出現(xiàn)了問(wèn)題,那么自己的APP就完全崩掉了,發(fā)版之后的APP什么也改不了。
這個(gè)問(wèn)題,你們能想到解決方案嗎?在下一篇文章中,我會(huì)說(shuō)一下討論的結(jié)果。
希望這點(diǎn)分享會(huì)對(duì)每個(gè)讀者有所幫助,如果有什么好的建議,可以在留言區(qū)告訴我。
這樣的分享我會(huì)一直持續(xù),你的關(guān)注、點(diǎn)贊、轉(zhuǎn)發(fā)和收藏是對(duì)我最大的支持,感謝。
如果這篇文章讓你有所收獲,歡迎關(guān)注公眾號(hào):java技術(shù)情報(bào)局
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/73954.html
摘要:但最近又聽(tīng)說(shuō)了另一種跨站攻擊,于是找了些資料了解了一下,并與放在一起做個(gè)比較。腳本中的不速之客全稱跨站腳本,是注入攻擊的一種。 XSS:跨站腳本(Cross-site scripting) CSRF:跨站請(qǐng)求偽造(Cross-site request forgery) 在那個(gè)年代,大家一般用拼接字符串的方式來(lái)構(gòu)造動(dòng)態(tài) SQL 語(yǔ)句創(chuàng)建應(yīng)用,于是 SQL 注入成了很流行的攻擊方式。...
摘要:根據(jù)年的報(bào)告看一下都有哪些常見(jiàn)攻擊。來(lái)自安全測(cè)試之有這么個(gè)網(wǎng)頁(yè),查詢的結(jié)果和查詢的關(guān)鍵字都會(huì)顯示到網(wǎng)頁(yè)上。安全是個(gè)大領(lǐng)域,暫時(shí)先到這里,以后有時(shí)間再總結(jié)寫別的。安全測(cè)試之拒絕服務(wù)攻擊知乎討論淺談攻擊方式 搞web離不開(kāi)security這個(gè)話題,之前關(guān)注的也不多只是聽(tīng)說(shuō)一些名詞什么的。是時(shí)候好好看看這些安全問(wèn)題了。根據(jù)Cenzic 2012年的報(bào)告看一下都有哪些常見(jiàn)攻擊。 37% ...
摘要:應(yīng)用常見(jiàn)安全漏洞一覽注入注入就是通過(guò)給應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的命令。此外,適當(dāng)?shù)臋?quán)限控制不曝露必要的安全信息和日志也有助于預(yù)防注入漏洞。 web 應(yīng)用常見(jiàn)安全漏洞一覽 1. SQL 注入 SQL 注入就是通過(guò)給 web 應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的 SQL 命令。 SQL 注入漏洞屬于后端的范疇,但前端也可做體驗(yàn)上的優(yōu)化。 原因 當(dāng)使用外...
摘要:應(yīng)用常見(jiàn)安全漏洞一覽注入注入就是通過(guò)給應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的命令。此外,適當(dāng)?shù)臋?quán)限控制不曝露必要的安全信息和日志也有助于預(yù)防注入漏洞。 web 應(yīng)用常見(jiàn)安全漏洞一覽 1. SQL 注入 SQL 注入就是通過(guò)給 web 應(yīng)用接口傳入一些特殊字符,達(dá)到欺騙服務(wù)器執(zhí)行惡意的 SQL 命令。 SQL 注入漏洞屬于后端的范疇,但前端也可做體驗(yàn)上的優(yōu)化。 原因 當(dāng)使用外...
閱讀 2658·2021-10-19 11:41
閱讀 2482·2021-09-01 10:32
閱讀 3430·2019-08-29 15:21
閱讀 1874·2019-08-29 12:20
閱讀 1217·2019-08-29 12:13
閱讀 684·2019-08-26 12:24
閱讀 2592·2019-08-26 10:26
閱讀 907·2019-08-23 18:40