---
# System prepended metadata

title: '[Magic Cookies and Web Bugs](http://staff.csie.ncu.edu.tw/~hsufh/COURSES/SPRING2023/7_cookies.ppt)'
tags: [電腦攻擊與防禦]

---

###### tags: `電腦攻擊與防禦`
# [Magic Cookies and Web Bugs](http://staff.csie.ncu.edu.tw/~hsufh/COURSES/SPRING2023/7_cookies.ppt)
## ***4/25***
# Magic Cookie
## Cookie 
- 被用來當identifying tokens
- 任何程式都可以採用這個方法
- 無法偽造
- 有些cookie會有
    - 數位簽章
    - 其他的加密方法
    
# Web bug (web beacon,tracking bug...)
- 可以放在email or html當中
- 是指***隱藏***在任何網頁元素或郵件內約1像素大小的GIF或PNG圖片
- 用來追蹤使用者的資訊,ex.讀取時間,ip位置,哪種browser,存在那些cookie
- html tag : 
    - img
    - iframe
    - style
    - script
    - input
- 可以透過get方法取得更多資訊
    - ![](https://hackmd.io/_uploads/Bk89QHz8n.png)
- 常被電子郵件行銷者、垃圾郵件發送者和釣魚者用來驗證
    * 地址是否有效 
    * 是否已經通過了垃圾郵件篩檢程式 
    * 是否確實被使用者查看

# HTTP Cookie
- Magic Cookie 衍生而來
- web server產生
- browser 接受
- 功能
    - 網站偏好
    - 儲存使用者資訊 ex.購物車..
    - 加速認證
    - 追蹤
## ***5/09***
## Cookie 
- 主要功能 : 加速認證
## Cookie Stealing
- 盜取cookie可以通過認證
## expires=DATE
- 定義cookie過期的時間
- 沒定義expire date則關閉瀏覽器就會消失
- 有定義則稱為Persistent cookie
- Persistent cookie不一定比non-Persistent存在的久
    - 因為可能Persistent cookie的expire date只有一秒
## Match a Cookie with a URL
![](https://hackmd.io/_uploads/Sk4uYugI2.png)
## domain=DOMAIN_NAME
- tail match : 從後面開始比對
    - A domain attribute of "acme.com" would match host names "anvil.acme.com" as well as "shipping.crate.acme.com".
- domain_name 只能設定自己的domain
## Misconceptions about Cookies
- cookies 只是資料不是code，不能去異動user的電腦資料
- Cookies are in fact only data, not code: they cannot erase or read information from the user's computer.
## Third-party Cookies
- 不屬於使用者訪問的網站的domain所發行的 Cookie(ex.網站中的圖片)
- 廣告公司會透過thrid-party cookie(set cookie)去追蹤使用者所看過的網站

## Drawbacks of Cookies(cookie缺點)
- cookie security attacks
    - Cookie theft : 如果cookie沒有加密，封包竊聽時會被攻擊者取得
    - Cookie poisoning : 竄改cookie的內容
    - Cross-site scripting : 盜取cookie
- Defend cookie poisoning 
    - cookie存放session id，server透過session id 讀取資料

## Cross-site Scripting
- Non-persistent XSS (Reflected XSS)
    - the most common type nowadays
- Persistent XSS
- DOM-based XSS


## `<SCRIPT>` Tag
- src = Specifies the URL of an outside file containing the script to be loaded and run with the document.
## `<FORM>` Tag
- action = Specifies the URL of the application that will process the form.

## Non-persistent XSS (*Reflected XSS*)
![](https://hackmd.io/_uploads/Hyol6nlIn.png)
- "criteria"這個參數沒有檢查使用者的輸入，導致使用者可以輸入惡意程式的js路徑
- xss可能導致
    - cookie theft (最主要的 authentication cookies,session management tokens)
    - account hijacking
    - changing of web application account settings
    - spreading of malware through webmail, etc.
- 最常被xss攻擊的
    - CGI scripts
    - search engines
    - interactive bulletin boards
    - custom error pages
- **xss不一定要點擊才會觸發, XSS可以透過img or iFrame載入js**
- xss偷取cookie的關鍵點就是時間,攻擊者要再user logout之前完成所有動作
## Non `<SCRIPT>` Events
![](https://hackmd.io/_uploads/ryM4D1ZI2.png)

## Persistent XSS
- 常發生在留言板
- 怎麼保護自己 
    - 關閉scripting language,但會造成網頁無法瀏覽
    - 用不同的瀏覽器，因為不同的瀏覽器cookie無法共用
- 開發者應該過濾input data


## ***5/16***
## Cross-site request forgery (*CSRF*)
- 電腦發出未經過使用者同意的request
- 特徵 : 
    - 網站有涉及身分認證
    - 利用網站對該身份的信任
    - 欺騙user的瀏覽器去發送一個request
    - 這個request會出現side effect(ex.轉帳功能)
- CSRF受害者
    - 網站沒對使用者的操作(request)做二次認證
    - 透過cookie認證使用者的網站，有可能造成使用者在不知情的情況下發出request
- CSRF attacks經常發生在網路討論區上，user允許在上面post image(再src內動手腳)
- CSRF必要條件
    - 攻擊者要知道受害者目前有認證的網站，並了解目標網站的操作方法，之後透過網路討論區做攻擊
    - 目標網站有受害者認證過的cookie
    - 目標網站沒有做二次認證的動作
- 如何預防 : 
    - 提供額外的驗證 (ex. 在表單中產生hidden欄位用於驗證)
## Same Origin Policy for JavaScript
- 同一個來源才有辦法獲取或設置properties (ex.cookie)
- 以下必須相同才能代表同源 : 
    - protocol(http or https)
    - port
    - host
- 透過document.domain可以通過同源偵測
- ![](https://hackmd.io/_uploads/Hk1C0bz8h.png)




