XSS攻擊(跨站腳本攻擊)
XSS 的全稱是 Cross Site Scripting 也就是跨站腳本咽扇,當(dāng)目標(biāo)網(wǎng)站目標(biāo)用戶瀏覽器渲染HTML文檔的過程中,出現(xiàn)了不被預(yù)期的腳本指令并執(zhí)行時(shí)蜀备,XSS就發(fā)生了咸产。
Xss會(huì)導(dǎo)致掛馬陪蜻,盜取用戶cookie,爆發(fā)web2.0蠕蟲腥刹,蠕蟲的Ddos攻擊马胧。
Xss攻擊的類型主要分為反射型,存儲(chǔ)型衔峰,dom-based型佩脊。
反射型:通過reflect植入script腳本,一般出現(xiàn)在用戶聊天和郵件垫卤。
存儲(chǔ)型:該攻擊會(huì)被存儲(chǔ)到數(shù)據(jù)庫威彰,可以存儲(chǔ)到存儲(chǔ)用戶評(píng)論的數(shù)據(jù)庫,導(dǎo)致植入了非法留言穴肘。
Dom-based:通過eval(location.hash.substr(1))設(shè)置歇盼,通過在url設(shè)置腳本,可以獲取cookie评抚。
被攻擊的主要原因:對(duì)于url提交的參數(shù)豹缀,過濾不夠。
防御XSS攻擊的方法:
1.對(duì)于輸入的url參數(shù)過濾慨代,對(duì)于普通的雙引號(hào)(" ")和大于小于號(hào)( < >)進(jìn)行轉(zhuǎn)義邢笙,對(duì)于script,style侍匙,iframe節(jié)點(diǎn)進(jìn)行一個(gè)黑名單的過濾氮惯,對(duì)于一些用戶只能輸入6-14個(gè)字符的內(nèi)容進(jìn)行白名單設(shè)置。
2.對(duì)輸出進(jìn)行編碼,cookie設(shè)置http-only(js腳本不能讀取到cookie)妇汗。
3.插件帘不,可以使用 https://cdnjs.com/ 的插件dompurity,可以凈化用戶插入的惡意腳本杨箭,在實(shí)際中用到厌均。
CSRF攻擊(跨站請(qǐng)求偽造)
CSRF攻擊原理
用戶先登錄網(wǎng)站1
網(wǎng)站1確認(rèn)登陸者的身份(給客戶端cookie)
網(wǎng)站2頁面向A網(wǎng)站發(fā)起請(qǐng)求(此時(shí)因步驟2,帶上A網(wǎng)站身份)
Csrf防御的幾種方法:
(1)盡量使用post
(2)使用驗(yàn)證碼
(3)驗(yàn)證referer告唆,可以在請(qǐng)求頭部中,設(shè)置referer頭部信息晶密,可以在一些被攻擊的接口繼續(xù)設(shè)置頭部擒悬,能夠檢驗(yàn)到相同頭部則通過,但是也容易在傳輸過程被串改稻艰。
(4)token
Csrf之所以成功懂牧,因?yàn)楹诳涂梢酝耆珎卧煊脩舻恼?qǐng)求,利用用戶的cookie來跳過安全檢測這塊尊勿。
解決方法:因此我們可以讓黑客獲取不了這個(gè)cookie僧凤,意思就是不放在cookie,而是把form表單頭部信息隨機(jī)添加token(或者h(yuǎn)eader頭部在添加meta設(shè)置name為csrf-token元扔,并且content為token隨機(jī)數(shù))躯保,這個(gè)token存儲(chǔ)在服務(wù)器中,在請(qǐng)求發(fā)來時(shí)澎语,進(jìn)行攔截途事,并且對(duì)其檢驗(yàn),不通過則不給登錄