什麼是XSS攻擊(Cross site scripting)?
定義
一種注入攻擊,利用使用者讀取網站程式造成的攻擊手法,通常是HTML/JS這類在前端瀏覽器使用者執行的程式碼。通常有兩種方法
- reflection attack(反射攻擊):利用網站提供的服務插入攻擊程式碼(e.g. 可自定義url的參數),再將已經加入攻擊程式的連結發送給使用者
- Persistent Attack(儲存性攻擊):攻擊者利用留言板類型的功能,將攻擊程式注入在內,令瀏覽的使用者都會被攻擊
如何防範
- 使用 PHP 提供
htmlspecialchars
這個function將使用者輸入文字轉換成純文字
- 使用套件提供工具而非native php輸出,在畫面渲染時就防止發生 e.g.
{}
- 使用User case 定義能通過的文字 e.g. 國家名稱
- 使用字串替代特殊文字 e.g.
\
、()
參考連結