2013-05-04 01 Ксения Дмитриева. html5, Взлом и защита
TRANSCRIPT
![Page 1: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/1.jpg)
Ксения Дмитриева
HTML5: Взлом и защита
![Page 2: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/2.jpg)
Немного о себе
• Консультант по безопасности программного обеспечения
• 4 года опыта в области безопасности ПО (AppSec)
04/13/2023 11:33 AM 2
• Магистр компьютерных наук, George Washington University, США
• Хобби – бальные танцы
![Page 3: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/3.jpg)
HTML5 – в стадии разработки
• Cross-origin Resource Sharing (CORS)
• Cross-document Messaging
• Хранение данных оффлайн
• IFRAME Sandboxing
• Управление историей браузера
• Геолокация
• и т. д.
04/13/2023 11:33 AM 3
![Page 4: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/4.jpg)
Хакеры не спят
04/13/2023 11:33 AM 4
![Page 5: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/5.jpg)
CORS
04/13/2023 11:33 AM 5
![Page 6: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/6.jpg)
Настраиваем CORS правильно
Настравиваем хэддер Access-Control-Allow-Origin:
• Не используем метасимвол *
• Следуем принципу минимальной привилегии
• Настраиваем окружение PROD отдельно от TEST
Настройка сервера:
• IIS7 – web.config
• Apache – mod_headers
04/13/2023 11:33 AM 6
OPTIONS /usermail HTTP/1.1
Origin: mail.example.com
Content-Type: text/html
HTTP/1.0 200 OK
Access-Control-Allow-Origin: http://www.example.com Access-Control-Allow-Origin: https://login.example.com
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-Prototype-Version, X-Requested-With, Content-Type, Accept
Access-Control-Max-Age: 86400
Content-Type: text/html; charset=US-ASCII
Connection: keep-alive
Content-Length: 0
Header set Access-Control-Allow-Origin http://www.example.com, https://login.example.com
![Page 7: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/7.jpg)
Web Messaging API
• КТО может отправлять сообщения?
• Frames, iframes, parent window
• КАК отсылаются сообщения?
• postMessage(message, target)
• window.addEventListener
• ЧТО отправляется в сообщении?
• Текст
• Источник/Origin
• Отправитель/Source
04/13/2023 11:33 AM 7
Атака
Атака
![Page 8: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/8.jpg)
Взлом функциональности Web Messaging
Демо
04/13/2023 11:33 AM 8
![Page 9: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/9.jpg)
Как безопасно использовать Web Messaging?
• Валидировать источник/origin
• Валидировать данные (на стороне клиента)
window.addEventListener("message", receiveMessage, false);
…
function receiveMessage(event){
…
if (event.origin !== "http://www.example.com")
return;
if (!validateEmail(event.data))
return;
div.getElementById('user_email_address').textContent = event.data;
…}
if (event.origin !== "http://www.example.com")
if (!validateEmail(event.data))
04/13/2023 11:33 AM
![Page 10: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/10.jpg)
<iframe src="http://www.untrustedpartyiframe.com"> </iframe>
Аттрибут sandbox
Same Origin Policy
Набор ограничений для встроенного iframe:
• "" (нет доверия)
• allow-same-origin
• allow-top-navigation
• allow-forms
• allow-scripts
04/13/2023 11:33 AM 10
<iframe src="http://www.untrustedpartyiframe.com" sandbox="allow-same-origin"> </iframe><iframe src="http://www.untrustedpartyiframe.com" sandbox=""> </iframe>
![Page 11: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/11.jpg)
Sandboxing против Clickjacking
Код для frame-busting:
WebBanking.html
04/13/2023 11:33 AM 11
Отключение кода frame-busting:
AttackerPage.html
<script> if(top != self) { top.location = self.location; }</script>
<iframe src="http://bank.com/WebBanking.html" sandbox=""> </iframe>
![Page 12: 2013-05-04 01 Ксения Дмитриева. HTML5, Взлом и защита](https://reader035.vdocuments.net/reader035/viewer/2022062419/557f22a0d8b42aea318b508d/html5/thumbnails/12.jpg)
Взлом защиты от clickjacking
Демо
04/13/2023 11:33 AM 12