flash
Странное с Флешем
Я с «Флешем» в последние годы не сталкивался, но и прежде подобного поведения не наблюдал. В общем, решил я вчера обновить в нашем продукте библиотеку ВебКамДжиЭс, она у нас для получения фотографии с камеры используется. Прежняя была 0.9, а тут я случайно обнаружил, что релиз вышел.
В прежней изображение с камеры получалось через Флеш, а релизная умеет использовать АПИ браузера, если таковое имеется. Правда, в «Сафари», которым я пользуюсь, этого АПИ нет и всё равно используется Флеш. Вот
В принципе, можно было откатиться на предыдущую версию, но смущало, что
У нас сервер отдавал Флеш с типом
Беглое гугление света не пролило, но если столкнётесь с похожей проблемой, имейте ввиду, возможное решение — смена типа для отдаваемого
Flash и безопасность
В качестве вялых воскресных препирательств, на «Хабре»
Между тем, правил для защиты от таких «уязвимостей» всего два: выдавать при обращении к заливаемым пользователем Flash заголовки для скачивания (а то и вообще отдавать все пользовательские ролики с другого домена, порта или протокола) и указывать правильные параметры для проигрываемых роликов, залитых пользователем. Последнее — нехитрая наука, таких параметров всего три: allowScriptAccess, allowNetworking и allowFullScreen.
Их назначение легко расшифровывается по названию.
Параметр allowScriptAccess (введен во Flash 6.0.40.0) управляет доступом к JavaScript/DOM браузера и имеет три возможных значения: always, sameDomain и never. Пояснения, на мой взгляд, требует только значение sameDomain. Если выбрано это значение, то доступ предоставляется только скриптам, которые загружены с того же домена, что и страница, куда они подключены.
Следующий параметр, allowNetworking (работает, начиная с Flash 9.0) разрешает или запрещает обращение Flash к собственным сетевым функциям и сетевым функциям браузера. Имеет значения all, internal (запрещает использование сетевых функций браузера) и none.
Параметр allowFullScreen (Flash 9 и выше) принимает два возможных значения — false (выставлено по умолчанию) или true, которые (соотвественно) запрещают или разрешают использование полноэкранного режима.
Очевидно, что наиболее безопасные параметры — allowScriptAccess="never", allowNetworking="none" и allowFullScreen="false":
<object height="400" width="500">
<param name="allowScriptAccess" value="never" />
<param name="allowNetworking" value="none" />
<param name="movie" value="ролик.swf" />
<embed type="application/x-shockwave-flash"
allowScriptAccess="never" allowNetworking="none" src="ролик.swf" height="400" width="500" />
</object>Очень жаль, но значение «never» для параметра для параметра «allowScriptAccess» сейчас является deprecated, так же как и использование параметра allowNetworking, когда страница, на которой подключен ролик и сам ролик загружаются с одного и того же домена.
Насколько я понимаю, это связано с тем, что фирма Adobe, текущий владелец технологии Flash, не хочет брать на себя ответственно за утечку критичных данных через Flash-ролики. Вместо использования этих значений параметров рекомендуется загружать Flash-ролики с другого домена и не допускать того, чтобы критичные данные и ролики были доступны с одного домена.
Alternativa Game
На блоге «Флэш Потрошитель» увидел ссылку на любопытный проект — движок Alternativa3D (есть небольшая демострационная версия, нещадно отъедающая память).

Alternativa3D — движок для MMORPG Alternative, который сделан на Flash9. В демонстрационной версии представлен небольшой кусок ланшафта с дорогами, травой, деревьями и домом. Всё это можно вращать, менять угол обзора. Скорость очень приличная — я попробовал игру на второй домашней машине, очень слабенькой (Pentium
- Трёхмерная геометрия
и 3D-спрайты. Здания и ландшафт выполняются в “честном” 3D, объекты со сложной геометрией — в виде спрайтов, в т.ч. многофазных. - Система освещения, включающая направленные и точечные источники света. Изменение времени суток, рассеянный и солнечный свет, автоматическое затенение в углах, динамические тени, включая тени от спрайтов.
- Настраиваемое качество текстур и освещения (при отсутствии аппаратной поддержки
3D-графики во Flash это особенно важно). - Низкая нагрузка на процессор (исключая моменты изменения освещения и вращения камеры, что происходит нечасто и не критично для игры).
У создателей игры большие планы:
В одиночку или сообща игроки строят финансовые империи, делают политическую карьеру, создают криминальные группы, плетут интриги в борьбе за влияние и территорию, продают и покупают, организуют бизнес, просто работают и общаются.
Играющие имеют возможность перемещаться по виртуальному миру, взаимодействовать друг с другом: общаться, драться, обмениваться предметами, покупать и продавать их; арендовать и покупать недвижимость, развивать собственные навыки и физические данные, организовываться в группы для достижения общих целей.
Любопытно будет взглянуть.