Самый неприятный синтаксический разбор
Это связано с тем, что известно как «самый неприятный синтаксис C ++». В принципе, все, что может интерпретировать компилятор как объявление функции, будет интерпретироваться как объявление функции.
Другой экземпляр той же проблемы:
std::ifstream ifs("file.txt");
std::vector<T> v(std::istream_iterator<T>(ifs), std::istream_iterator<T>());
v
интерпретируется как объявление функции с двумя параметрами.
Обходной путь заключается в добавлении еще одной пары круглых скобок:
std::vector<T> v((std::istream_iterator<T>(ifs)), std::istream_iterator<T>());
Или, если у вас есть C ++ 11 и инициализация списка (также известная как равномерная инициализация):
std::vector<T> v{std::istream_iterator<T>{ifs}, std::istream_iterator<T>{}};
При этом нет возможности интерпретировать его как объявление функции.
Adobe заявляет, что можно установить allowScriptAccess=never и allowNetworking=none, и swf не должен иметь никакого доступа ни к чему за пределами себя. Хотя allowNetworking находится только в Flash Player 9, таким образом, пользователи с более ранними версиями Flash все еще были бы восприимчивы к некоторому использованию.
Создание более безопасных веб-приложений SWF: Управление безопасностью В рамках HTML-кода
Flash имеет в распоряжении некоторые аккуратные меры безопасности. Разрешение пользователям загрузить swf's на Ваш сайт и встраивание их небезопасно, Вы в основном собираетесь для нападения XSS.
Однако разрешение их к горячей ссылке не должно быть проблемой. swf будет заблокирован к домену, который размещает его и не позволяется, называя URL за пределами того пространства.
Это все еще будет открыто для "злых ссылок" (я уверен, что существует надлежащее слово для них), и этим я означаю иметь обычные ссылки на yoursite.com/admin/deleteallpages.php, который это пытается загрузить "как" Вы. Это однако не сможет использовать эти данные всегда, это в основном совпадет с нормальной ссылкой, и я предположил бы, что современные cms' защищены от того типа нападений.
Вы могли получить ту же защиту путем хостинга вспышек на другом субдомене, так как флэш-память считает это тем же как совершенно другой домен.
При встраивании SWFs из неизвестных источников это - также лучшая практика для броска маски на Загрузчик так, чтобы загруженный SWF не мог принять больше экранной недвижимости, чем ожидалось.
Псевдокод, чтобы сделать так:
var maskSpr : Sprite = new Sprite();
maskSpr.graphics.beginFill();
maskSpr.graphics.drawRect(0,0,safeWidth,safeHeight);
maskSpr.graphics.endFill();
myLdr.mask = maskSpr;
Как пример Drupal имеет сценарий того, как разрешение содержания флэш-памяти от пользователей могло быть проблемой безопасности.
Да, это небезопасно.
Нет никакого простого способа позволить его. У Вас мог быть доменный белый список, который позволил YouTube, Hulu, и т.д. через, но белый список по сути кропотлив - Вы постоянно обновляли бы.
На самом деле существует более одной опции.
Для полной безопасности установите allowScriptAccess = never и allowNetworking = none, и swf не будет иметь доступа ни к чему вне себя.
ПРИМЕЧАНИЕ: allowNetworking есть только в Flash Player 9 (он был создан в ответ на различных червей myspace), поэтому вам нужно использовать SWF-объект , чтобы гарантировать, что только пользователи с правильной версией flash player или лучше имеют flash загружен.
Если вы хотите включить такие вещи, как видео на YouTube, вы не можете установить для allowNetworking значение «none». К счастью, для этого поля существует промежуточный уровень безопасности - «внутренний», который позволяет SWF взаимодействовать со своим размещенным доменом.
Также обратите внимание, что вам лучше не иметь файл crossdomain.xml на вашем сайте - подробнее об этих опасностях здесь и другие места.
Вот некоторые другие сайты, которые упоминаются в других ответах, которые более подробно описывают:
http://www.adobe.com/devnet/flashplayer/articles/ secure_swf_apps_04.html
http: //blogs.adobe. com / stateofsecurity / 2007/07 / how_to_restrict_swf_content_fr_1.html