# [工商時間](https://hackmd.io/@R4NLb2wmTOGF6O81GCWTcw/By0i571xf#/)
---
## 留言問問題
## 請先登入這個[網站](https://www.sli.do/)
## #V365

---
# Web Security 0x2
---
# url.ezwu.me/0x2
## 請大家分給大家
---
## 開始新的東西前
## 先來回顧一下[上一次](https://hackmd.io/@D0715704/B1ksczvLS#/5/1)上了什麼
----
## 網頁前後端
- 前端:HTML、CSS、JavaScripty
- 後端:MySQL、Apache、nginx
----
# HTTP 相關
- 協定版本
- HTTP Method
- HTTP Request、Response
----
## 網頁開發者工具
### F12、亂改網頁
----
# [OWASP](https://www.owasp.org/index.php/Main_Page)
---
## 那我們今天要幹嘛呢
### XSS?
### SQL_injection?
### LFI?
----
## 其實也不是不行
## 但我想讓大家玩個東西
---
## 回到剛剛的 HTTP
### 你們現在知道他是在傳輸時的一種協定
----
# 問題來了
----
# 安全嗎?
- [HTTP RFC](https://www.google.com/search?safe=off&sxsrf=ACYBGNQN0iAE1KXeZ57r0B6xEBFJUCXejw%3A1570958070683&ei=9uqiXcCvKZmLr7wPm6mJiAc&q=HTTP+rfc&oq=HTTP+rfc&gs_l=psy-ab.3..0i7i30l10.1041.4200..4505...0.2..0.257.1068.7j2j1......0....1..gws-wiz.......0i71j35i39j0i203j0j0i67j0i10i203j0i20i263.8SDc_4eYnkM&ved=0ahUKEwjAgoru8pjlAhWZxYsBHZtUAnEQ4dUDCAs&uact=5)
----
## 不知道你有沒有注意過這個


----
## 那為什麼 HTTP 就不安全?
## 怎麼個不安全法?
----
## 留著這些疑問,等一下告訴你

---
## 敏感資料
----
### 看到這四個字,你會想到啥?
- 你的 D 槽
- 你瀏覽器中的某個資料夾
- 你抽屜裡的那個硬碟
- 還是你衣櫃裡的夾層
----
## 以上我們今天應該都不會看到
## ~~還是你願意讓我看看?~~
----
## 但我這裡指的是以下的東西
- 遊戲帳號、密碼、信箱
- 甚至是你傳出去的訊息
----
## 說不定你今天上完可以知道旁邊人的帳密囉
---
# 中間人攻擊
----
## 故名思義,你就想作你在他跟別人聊天的時候
## 有個人在偷聽你們的對話

----
## 會造成什麼危害呢?
- 機敏資料外洩
- 封包重送攻擊
----
## 具體上是怎麼做到的呢
----
## 首先讓我們了解一下
### HTTP 的傳輸方式
----
## HTTP 的傳輸方式
### 還記得上一節課的這張圖嗎?

----
## 所以大致上的過程如下
----
## Client Requset

----
## Server Response

----
## 試想如果今天有個人要偷聽你們的對話
## 他該怎麼切入你們的連線呢
----
## 相信五歲抬頭的各位應該都知道怎麼做吧
----
## 大致上如下圖

---
# 攔截封包
## 工具:Charles、Wireshark、Burp Suite
----
## 什麼是封包
----
## 他是網路在通訊時,資料的基本單位
## 裡面不外乎裝的就是你要通訊或傳送的訊息
## 所以我們今天要攔的就是他
----
# [Charles](https://www.charlesproxy.com/download/latest-release/)
- MAC
- Windows
- Linux版<-(我還真沒用過)
----

----
## Windows

----
## MAC

----
## 給大家一些時間去試看看囉~
----

----
## HTTPS 的部分應該才是大家比較想看到的吧
---
## 憑證
### 用來確認資料來源的真偽所用
----
### 首先來知道 HTTP 和 HTTPS 的差別吧

----
## 從上述中我們發現HTTP有以下幾點問題
1. 只能用明文進行傳送,就算你加密,也有很大的風險會被解密
2. 你無法確定是否你的Request或Response是你指定的那個人給你的
----
### 所以才需要 HTTPS
### 那多出來的 S 代表了 SSL/TSL
----
### 為了解決上述的情況發生
### 所以我們來用「公私鑰加密」和「發行憑證」吧
----
# 公私鑰加密
----
## 公鑰每個人都可以看到,但私鑰只有發行者有
## 且公鑰加密過的內容,只有私要解得開
----
# 所以我們達到第一步,要加密
----
# 發放憑證
----
## 即使加密過了,為了確保正個過程沒有被冒用
## 就會請第三方機構的加入,來跟雙方保證可信度
## 而這個第三方通常稱為「數位憑證認證機構」(俗稱 CA
----
## 簡單來說,我們在跟支援 HTTPS 的網站連線時
## 你會把你的訊息跟憑證一起交給對方伺服器
----
## 然後這個網站就會藉由這個憑證來確認你是否值得信賴
## 如果 OK 就會通過裡面的私鑰和公鑰加密與溝通
----
## 這樣懂了嗎?
----

----
## 我還是用圖說明比較合適
----

----

----

----

----

----

----

----

----

----

----
## 聽完應該能理解吧
----

----
## 我們還是來實際操看看吧
----
# [Windows](https://hackmd.io/@a97j7l_EQ_qtgzwLxvnxig/ry7dOwZtB)
# [MAC](https://hackmd.io/@a97j7l_EQ_qtgzwLxvnxig/SJJAdDWtB)
---
# 最後你應該會問,可以攔手機的封包嗎?
----
## iPhone 我行
## Android (版本7.0以下會)
## 至於7.0以後請參考[這裏](https://medium.com/@elye.project/android-nougat-charlesing-ssl-network-efa0951e66de)
----
## 這次以 iPhone 系統來示範
---
## 點 WIFI 設定中的驚嘆號

----
## 按進去設定代理

----
## 然後這個伺服器要填的部分要注意 一下

----
## 回到 Charles 點選 Help 的 Local IP Address

----
## 進去後參考這裏

----
## 弄完以後用 safari 去到以下網址
## `chls.pro/ssl`
- Note:一定用safari,且要確認連上網路且你的Charles要開著喔
----
## 然後他會要你下載,就下載吧

----
## 之後到「設定」裡的「一般」

----
## 拉到最下面應該要有個描述檔

----
## 然後你會看到他,點開

----
## 按下安裝

----
# 安裝完後,你以為這樣就結束了嗎
----
## 回到一般的關於本機

----
## 最下面有個憑證信任設定

----
## 進去幫你剛下載的 Charles 按完整信任

----
## 基本上,回到 Charles 看應該就會攔到了

----
## 我知道你想問 Android 的怎麼用


---
## 感謝辛苦大家今天來上課
## 最後請幫我填個回饋表單再走

----
# 回饋表單

{"metaMigratedAt":"2023-06-15T00:43:14.789Z","metaMigratedFrom":"YAML","title":"Web Security 0x2","breaks":true,"image":"https://i.imgur.com/z83kHke.png","slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"6bdee3ee-5fc4-43fa-ad83-3c0bc6f9f18a\",\"add\":7754,\"del\":2254}]"}