Комментарии 36
Придет время и веб-индустрия поймет, что единственный адекватный подход к защите от XSS это:
- Использовать DOM-based шаблоны вместо текстовых
- Исключить использование inline-javascript в HTML, включая on* аттрибуты
- Использовать Content-Security-Policy и X-Frame-Options: DENY
- Фильтровать ссылки и адреса ресурсов, генерируемые динамически
Действительно, единственный адекватный подход к защите от чего угодно — это закрыть все векторы атак. А можно просто не позволять пользователю передавать на сервер ничего, что может быть исполнено в браузере (ну и, соответственно, не выполнять на сервере ничего, что было прислано пользователем).
Ещё забыли:
— вайтлистинг по умолчанию (пропускать только то, что явно разрешено)
— вайтлистинг по умолчанию (пропускать только то, что явно разрешено)
Сама по себе ситуация, когда разрешаешь какому-то левому человеку на свой сайт вставлять любой Html уже странная.
В любом другом случае надо тупо ескейпить пользовательский вывод, наверное во всех уже веб языках есть тупо спец функция.
В любом другом случае надо тупо ескейпить пользовательский вывод, наверное во всех уже веб языках есть тупо спец функция.
Язык, в котором существует такая команда, как
eval()
, не может быть безопасным по определению.Но ведь в любом тюринг-полном языке можно написать свой собственный eval(). И что, все небезопасны? :)
Разумеется, да.
Язык, предназначенный для выполнения кода в рамках песочницы, имеет право быть тьюринг-полным только на ограниченном множестве действий.
Скажем, если вы запретите в языке Java компиляцию кода и отрубите JNI, то язык станет вполне себе безопасным (с точностью до протечек)
Язык, предназначенный для выполнения кода в рамках песочницы, имеет право быть тьюринг-полным только на ограниченном множестве действий.
Скажем, если вы запретите в языке Java компиляцию кода и отрубите JNI, то язык станет вполне себе безопасным (с точностью до протечек)
Это не остановит тех, кто умудрится написать компилятор на самой Java — то есть сам по себе eval всё равно возможен.
Так на здоровье. Пусть пишут компилятор. Всё равно, как сам компилятор, так и код, который он способен сгенерить, будет жить в пределах всё той же песочницы. Скажем, если вы не подключите свой ноутбук к кофеварке, он никогда не сварит вам кофе. Что бы вы на нем ни программировали. Хотя он является вполне Тьюринг-полной машиной :)
Что касается eval, то он страшен только одним — он делает почти невосможной задачу «сужения» возможностей JS. То есть как с кошкиной головой — если куда-то ролезет eval, то туда проезет весь JavaScript. Что и проиллюстрировал талантливый юноша.
Я про eval написал, потому что в статье много раз повторялось «MySpace запретил то», «MySpace запретил сё», а потом следом показывается, как это обойти. И почти всегда обходится это с помощью eval.
Что касается eval, то он страшен только одним — он делает почти невосможной задачу «сужения» возможностей JS. То есть как с кошкиной головой — если куда-то ролезет eval, то туда проезет весь JavaScript. Что и проиллюстрировал талантливый юноша.
Я про eval написал, потому что в статье много раз повторялось «MySpace запретил то», «MySpace запретил сё», а потом следом показывается, как это обойти. И почти всегда обходится это с помощью eval.
Еще можно написать, что вообще все в мире небезопасно и жизнь боль, тока как это относится к данной статье?
Очень просто. Если сократить статью до одной строки и предельно обобщить, она будет звучать примерно так:
«В очередной раз люди, считавшие, что некая технология находится у них под контролем и ничего катастрофического произойти не может, получили сообразно своей самоуверенности и за это, как водится, наказали того, кто продемонстрировал это».
А мысль, которую я высказал, была очевидна опытным разработчикам 20 лет назад так же, как и сегодня (я уверен в этом, потому что имею некоторый опыт общения с хорошими девелопервамми поколения своих родителей). Но, увы, технологии развиваются так, что на языке, изначально «спроектированном» (если вообще такое слово может быть применено к нему) для того, чтобы анимировать баннеры на сайтах, пишут клиентскую часть к интернет банкам. А о безопасности начинаем думать только когда случится катастрофа. В итоге огребем с такой культурой.
«В очередной раз люди, считавшие, что некая технология находится у них под контролем и ничего катастрофического произойти не может, получили сообразно своей самоуверенности и за это, как водится, наказали того, кто продемонстрировал это».
А мысль, которую я высказал, была очевидна опытным разработчикам 20 лет назад так же, как и сегодня (я уверен в этом, потому что имею некоторый опыт общения с хорошими девелопервамми поколения своих родителей). Но, увы, технологии развиваются так, что на языке, изначально «спроектированном» (если вообще такое слово может быть применено к нему) для того, чтобы анимировать баннеры на сайтах, пишут клиентскую часть к интернет банкам. А о безопасности начинаем думать только когда случится катастрофа. В итоге огребем с такой культурой.
Если бы парень не бросил школу, он бы узнал, что такое геометрическая прогрессия, и смог бы предвидеть результат работы вируса.
Это не геометрическая прогресия, большая часть контактов будет ссылаться на уже имеющиеся.
Это теория графов и «6 рукопожатий». Первое институт, второе тогда ещё было непопулярно.
Это теория графов и «6 рукопожатий». Первое институт, второе тогда ещё было непопулярно.
Я не говорю о точном моделировании ситуации.
Это будет именно прогрессия, если рассматривать просто усредненный рост заражений через промежутки времени. Просто некоторые участники будут заражаться повторно. Да и в любом случае, для представления масштабов, ему достаточно было бы знаний о геометрической прогрессии.
«большая часть контактов будет ссылаться на уже имеющиеся» — только ближе к разгару эпидемии. А в начале достаточно случая, чтоб к нему зашел друг без общих с ним друзей.
И давайте не будем спорить, это не принципиально в данном случае.
Это будет именно прогрессия, если рассматривать просто усредненный рост заражений через промежутки времени. Просто некоторые участники будут заражаться повторно. Да и в любом случае, для представления масштабов, ему достаточно было бы знаний о геометрической прогрессии.
«большая часть контактов будет ссылаться на уже имеющиеся» — только ближе к разгару эпидемии. А в начале достаточно случая, чтоб к нему зашел друг без общих с ним друзей.
И давайте не будем спорить, это не принципиально в данном случае.
Он же писал червя не задумываясь ни о чем. Тогда еще небыло публикации и исследований о круге друзей, друзей-друзей, никто не строил(или не публиковал на весь интернет) миллионные графы знакомств. Он вполне мог подумать, что круг его друзей и всех их друзей замкнутый и обводится шариком. Ведь его цель была — не узнать, кто кому приходится другом, а просто проверить код, запустить свою идею на весь сайт… А последствия начиная с миллионом друзей, заканчивая уголовным преследованием было во вторую очередь.
Задаче о зернах и шахматной доске сотни лет. Точно не знали? ))
Я вам про мягкое, а вы мне про теплое. Одно дело знать учения, другое — помнить обо всех них в определенный момент. Если бы Сэм задумался обо всем, то конечно такой сообразительный человек смог бы понять, что этот вирус расползется, и что это повлечет уголовку(с которой в Америке в области киберпреступлений гораааздо строже, чем у нас).
Но дело то в том, что его полностью охватило желание испытать технологию. Неужели с вами никогда такого не было?
Но дело то в том, что его полностью охватило желание испытать технологию. Неужели с вами никогда такого не было?
Ну да. А так он узнал об этом на практике, обменяв три года без компьютера на мировую известность и уникальное место в истории компьютерной безопасности. Реально стал героем своего времени. :)
А это не тот ли парень, что соорудил evercookie? Радует, что известен он не только этим червем.
У него проектов много, и все они достаточно крутые:
samy.pl/combobreaker — взломщик замков
samy.pl/keysweeper — сниффер беспроводной клавиатуры в корпусе зарядного устройства
samy.pl/pwnat — пробрасывалка NAT с классной идеей
github.com/Proxmark/proxmark3 — устройство для работы с RFID-картами
samy.pl/combobreaker — взломщик замков
samy.pl/keysweeper — сниффер беспроводной клавиатуры в корпусе зарядного устройства
samy.pl/pwnat — пробрасывалка NAT с классной идеей
github.com/Proxmark/proxmark3 — устройство для работы с RFID-картами
Вот интересно. Ну он же не мог полноценно протестировать червя перед запуском.
Этот перевод…
Почему Starbucks, а не любой торговый центр?
Его последующие продукты тоже интересные — автоотмычка для замков, перехватывальщик дронов и evercookie например.
А "& quot;" для кавычек?
А ещё
eval('document.body.inne' + 'rHTML')
можно было бы заменить конструкцией document.body['inne' + 'rHTML']
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Червь, который изменил Интернет