1: 簡要描述 HTTPS 的安全機制,描述 Http2 和 Https 的關系
為什么 HTTPS 安全:
因為網路請求需要中間有很多的服務器路由器的轉發,中間的節點都可能篡改資訊,而如果使用 HTTPS,密鑰 在 你 和 終點站 才有,https 之所以比 http 安全,是因為他利用 ssl/tls 協議傳輸,它包含 證書,卸載,流量轉發,負載均衡,頁面適配,瀏覽器適配,refer 傳遞等,保障了傳輸程序的安全性
Https 實作原理
HTTPS 在通訊程序中的原理,總共分為 8 步 :
- 1: 客戶端發起 HTTPS 請求 2: 服務端的配置
- 3: 傳送證書 4: 客戶端決議證書
- 5: 傳送加密資訊 6: 服務端解密資訊
- 7: 傳輸加密后的資訊 8: 客戶端解密資訊
http2 和 https 的關系
- HTTP 協議通常承載于 TCP 協議之上,在 HTTP 和 TCP 之間 添加一個安全協議層(SSL 或 TLS),這個時候,就成了我們常說的 HTTPS,
- 默認 HTTP 的埠號為 80; HTTPS 的埠號為 443,
2: 什么是點擊劫持?如何防范?
原理:第三方網站通過iframe內嵌某一個網站,并且將iframe設定為透明不可見,將其覆寫在其他經過偽裝的DOM上(使用定位的手段),偽裝的可點擊DOM(按鈕等)與 實際內嵌網站的可點擊DOM位置相同,當用戶點擊偽裝的DOM時,實際上點擊的是iframe中內嵌的網頁的DOM從而觸發請求操作
特點:用戶自己做了點擊操作;用戶毫不知情;
最常見的是惡意網站:使用 <iframe> 標簽(把我們自己含有重要的資訊的網頁:如交易頁面)嵌入進去,然后把 iframe 設定透明,用定位的手段,引誘用戶在惡意網站上點擊,這樣用戶在不知不覺中就進行了某些不安全的操作
有兩種方式可以防范:【 iframe會阻塞主頁面的Onload事件 】
-
1: 使用 JS 防范:
// 如果iframe 和 當前被嵌入的頁面 不在同一域名下,則表示存在,非法網頁嵌入的可能
if (top.location.hostname !== self.location.hostname) {
alert("您正在訪問不安全的頁面,即將跳轉到安全頁面!");
top.location.href = self.location.href;
}
-
2: 使用HTTP頭防范:
1: 通過配置 nginx 發送 X-Frame-Options 回應頭,這樣瀏覽器就會阻止嵌入網頁的渲染,
2: add_header X-Frame-Options SAMEORIGIN;
3: CSRF
概念:CSRF 跨站點請求偽造 跟 XSS一樣,存在巨大危害性,是一種對網站的惡意利用,盡管聽起來像跨站腳本(XSS),但是它與XSS非常不同【 XSS利用站點內的信任用戶; CSRF通過偽裝受信任用戶的請求來利用受信任的網站】與XSS相比,CSRF 攻擊不太流行(因此對其防范的資源也相對較少),和難以防范,所以認為比 XSS 更具危險,
簡單理解: 你可以這樣來理解:攻擊者盜用了你的身份,以你的身份發送惡意請求(如:發郵件,發資訊,盜取你的賬號,添加系統管理員,購買商品,虛擬貨幣轉賬等),對服務器來說這個請求是合法的,但是卻完成了攻擊者想要的一個操作,如下:其中 Web A 為存在 CSRF漏洞的網站,Web B為攻擊者惡意構建的網站,User C 為 Web A 網站的合法用戶:
1: 用戶 C 打開瀏覽器,訪問受信任的 Web A 網站,輸入用戶名和密碼請求登錄網站 A
2: 在用戶資訊通過驗證之后,網站 A 產生cookie資訊 并回傳給瀏覽器,此時用戶成功登錄網站 A, 可以正常向網站 A 發送請求
3: 用戶未退出 網站 A 之前,在同一瀏覽器中,打開一個TAB頁訪問 網站 B
4: 網站 B 接收到用戶請求后,回傳一些攻擊性代碼,并發出一個請求要求訪問第三方站點A
5: 瀏覽器在接收到這些攻擊性代碼后,根據網站B的請求,在用戶不知情的情況下攜帶 cookie向站點A發送請求,站點A并不知道該請求是由網站B發起的,所有會根據用戶C的 cookie資訊 以C的權限處理該請求,導致來自網站B的惡意代碼被執行

怎么攻擊別人 ??
寫一個自己的 網站A,網站里iframe嵌套一個別人的 網站B,完了以后我把我的 域名A-domain做 的很像 網站B的域名 B-domain,發給別人,別人誤以為這是官方網站,進行 登陸 等一系列操作,我在頁面中加上我自己的一些腳本就 可以通過他的cookie 執行很多操作!
<html> <head> <script type="text/javascript"> function steal() { iframe = document.frames["steal"]; iframe.document.Submit("transfer"); } </script> </head> <body onl oad="steal()"> <iframe name="steal" display="none"> <form method="POST" name="transfer" action="http://www.myBank.com/Transfer.php"> <input type="hidden" name="toBankId" value="11"> <input type="hidden" name="money" value="1000"> </form> </iframe> </body> </html>
參考鏈接:
https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
預防CSRF方法:
1: 驗證 HTTP Referer 欄位
2: 請求地址添加token,并校驗
3: 在http請求頭里面自定義屬性,并校驗
4: 通過驗證碼的方法 校驗
特點
- 依靠用戶標識危害網站
- 利用網站對用戶標識的信任
- 欺騙用戶的瀏覽器發送 HTTP 請求給目標站點
- 另外可以通過 IMG 標簽會觸發一個 GET 請求,可以利用它來實作 CSRF 攻擊,
防御
- 就是在客戶端頁面增加偽亂數,
- 通過 referer、token 或者驗證碼來檢測用戶提交,
- 盡量不要在頁面的鏈接中暴露用戶隱私資訊,
- 對于用戶修改洗掉等操作最好都使用 post 操作 ,
- 避免全站通用的 cookie,嚴格設定 cookie 的域
4: XSS
概念:XSS是一種經常出現在 web應用中 的 計算機安全漏洞,攻擊者往 web頁面插入惡意html標簽 或者 javaScript 代碼
攻擊場景:
如:1:攻擊者在論壇里放一個看似安全的鏈接,騙取用戶點擊后,竊取 cookie 中的用戶私密資訊;
2: 攻擊者在論壇中加一個惡意表單,當用戶提交表單時,卻把資訊傳送到攻擊者的服務器中,而不是用戶原本以為的信任網站
3: 常見于前端的 input框 還有 console控制欄,我們將我們寫好的腳本通過input標簽注入,沒有攔截過xss頁面將會直接執行這些腳本,
真正的危險是: 當你的 腳本被 上傳到服務端( 存在資料庫 或 者快取中,常見于 評論 等功能),當其他人請求此資源時,服務端就會將此腳本下發至客戶端,客服端收到請求后,就會自動執行此腳本,
它允許 惡意web用戶 將代碼(如HTML代碼,客戶端腳本)植入到 提供給其他用戶使用的頁面 中,攻擊者利用 XSS 漏洞旁路掉訪問控制-----同源策略,這種型別的漏洞由于被黑客用來撰寫危害性更大的網路釣魚(Phishing)攻擊,而變得廣為人知,對于跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的 “緩沖區溢位攻擊” , 而JavaScript是新型的ShellCode
示例:
<script>alert(document.cookie)</script>
特點
能注入惡意的 HTML/JavaScript 代碼到用戶瀏覽的網頁上,從而達到 Cookie 資料竊取、會話劫持、釣魚欺騙等攻擊, 【 攻擊代碼不一定(非要)在 <script></script> 中】
原因
- 1:web瀏覽器本身的設計不安全,瀏覽器能決議和執行JS代碼,但是不會判斷該資料或程式代碼是否是惡意的;
- 2:輸入輸出是web應用最基本的互動,而且網站的互動功能越來越豐富;如果在這個程序中沒有做好安全防護,很容易出現XSS漏洞
- 3:開發人員沒有相關的安全意識
- 4:XSS攻擊手段靈活多變
危害
- 1: 盜取各類用戶賬號:(登錄賬號,用戶網銀賬號,各類管理員賬號)、
- 2:控制企業資料:(讀取,篡改,添加,洗掉,企業敏感資料的能力)
- 3:竊取企業重要的具有商業價值的資料
- 4:非法轉賬
- 5:強制發送郵件
- 6:網頁掛馬(將 木馬程式 下載到用戶本地,并進一步執行,當木馬獲得執行之后,就意味 著會有更多的木馬被下載,進一步被執行,進入一個惡性的回圈,從而使用戶的電腦遭到攻擊和控制)
- 7:控制受害者機器向其他網站發起攻擊
如何防范
- 1: 將重要的cookie標記為http-only,這樣 JS陳述句中document.cookie 陳述句就獲取不到cookie了,或者直接避免在cookie中泄露重要資訊(如:郵箱,密碼等)
- 2: 對頁面中的資料進行 Html Encode(編碼)處理
- 3: 盡量采用 POST 而非 GET 提交表單
- 4: 表單資料規定值的型別:如 年齡必須是int,name:只能是數字加字母組合,,,
- 5: 過濾 或 移除特殊的 html 標簽:如:<script> , <iframe> , < for <, > for >, " for,,,過濾JavaScript 事件標簽:"onclick" , "onfocus" 等待
決議:參考資料:
https://www.cnblogs.com/phpstudy2015-6/p/6767032.html
https://www.cnblogs.com/443855539-wind/p/6055816.html
https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065?fr=aladdin
常見的攻擊和預防匯總(內容非常精彩): https://www.cnblogs.com/zhiying/p/11018331.html
5: XSS 與 CSRF 有什么區別嗎?
XSS : 是獲取資訊 (不需要提前知道其他用戶頁面的代碼和資料包)
CSRF:是代替用戶完成指定的動作(需要知道 其他用戶頁面的代碼 和 資料包)
完成一次CSRF攻擊,受害者必須完成2個步驟:
1: 登錄 受信任的網站 A,并在本地生成 Cookie
2: 在不登出 A 的情況下,訪問 危險網站 B
6: 如何處理不讓別人盜用你的圖片,訪問你的服務器資源?
方法 1: 通過讀取 http請求里的 header里面的referer資訊 ,對refer做判斷,看來源是不是自己的網站,不是就拒絕
HTTP請求中有一個referer的報文頭,用來指明當前流量的來源參考頁(訪客是從什么渠道來到當前頁面的,)
例如在www.sina.com.cn/sports/上點擊一個鏈接到達cctv.com首頁,
那么 referrer 就是 www.sina.com.cn/sports/了,
// 在Javascript中,
document.referrer來獲取
方法 2: 通過session校驗,如果不通過特定服務生成 cookie 和session 就不能請求 得到資源
內容拓展:
HTTP請求中的 referrer 報文: 可以告訴我們 不同渠道帶來的流量的分布情況,還有用戶搜索的關鍵詞等,都是通過分析這個 referrer 資訊來獲取的,這個是非常重要的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316384.html
標籤:其他
上一篇:使用for回圈 if陳述句洗掉行
下一篇:在QUERY中應用IF邏輯
