1. ActionScript / Говнокод #11722

    −86

    1. 1
    var file: * = File.userDirectory.resolvePath(CACHE_PATH + hashURL(key));

    На первый взгляд просто немного странный код, но за ним стоит интересная история.
    Человек написавший этот код после долгих расспросов и двузначных ответов таки сознался, что таким образом он надеялся избежать компиляции AIR классов в бразуерном проекте. Но интереснее еще и то, что человек продолжает в это свято верить и отстаивать свою точку зрения... а я уволился.
    Если вы не в курсе, Адоби делают несколько версий плееров, одна "ветка" предназначена для запуска с десктопа и ей можно обращаться к файловой системе, в то время как обычному плееру в браузере такое делать нельзя, ну или только после всяческих подтверждений и т.п. Человек таким образом пытлася написать кеширование загруженных картинок на диск к пользователю. Но тут судьба сыграла злую шутку, он компилировал все эти классы в библиотеку, которую забывал обновлять, и по счастливому стечению обстоятельств, библиотечный класс не содержал никаких упоминаний файловой системы - и все работало замечательно.

    Прогрнозируемый разрыв шаблона произойдет примерно недели через две-три, когда нужно будет обновлять версию. Ну, это конечно при условии, что кеширование каким-то образом будут тестировать, но, скорее всего не будут, и шутка может затянуться.

    Запостил: wvxvw, 07 Сентября 2012

    Комментарии (24) RSS

    • какая ирония судьбы )
      Ответить
    • > отстаивать свою точку зрения... а я уволился
      Иногда - лучший вариант.
      Ответить
    • > Адоби делают несколько версий плееров
      Отличное решение проблемы, не то что убогий жабий SecurityManager
      Ответить
      • Та ну, Адобовские решения в плане безопасности - это вообще печаль... и вообще, надо срочно во что-то другое переквалифицироваться, хоть бы даже в сисадмина :( Такую, блин, хорошую идею так запороть.
        Ответить
        • а зачем клиентской платформе секюрность?
          Ответить
          • Эли Гринфилд разделяет ваше недоумение :)
            Ответить
        • Печаль? Две недели назад проверка дополнений Firefox выругалась, что флеш-плагин с критическими дырами. Я его тогда обновил, сейчас снова проверил. Он снова в критическом статусе. Что они там со всем этим делают - загадка.
          Ответить
          • Тут может быть очень много всего и не все вина Адоби. Например (я это говорю не к тому, чтобы Адоби защищать, просто для справки). NPAPI (Netscape Plugin API), которые по чистой случайности были написаны кем-то из Адоби но еще задолго до того как Флеш вообще придумали - мягко говоря не самая лучшая модель для безопасного общения с окружением. Вообще были склепаны на коленке для того, чтобы пропихнуть смотрелку PDF в браузер, а потом немного допилили. Несколько лет назад Мозила таки осознала эту проблему и перенесла API в специальную программу-посредник между плагинами и браузером (plugin-container). Это как бы разросшийся костыль... Гугл предложили переделать API делая их более безопсными, но Мозила забила на это почему-то :/ В Линуксовых сборках Хрома, не знаю как в других, Гугл сам пакует флеш плагин для Pepper API. По крайней мере Селинуксу с этим лучше живется, но сборки флеш плеера пока блее экспериментальные.

            Еще такой момент OpenGLSE в некотором смысле без наличия определенных возможностей в драйвере видеокарточки, которые в свою очередь вообще могут зависеть от самой карточки можно рассматривать как небезопасные. Опасности там сугубо теоретические - типа воровства картинок загруженных из другого домейна... но тем не менее это опять же может быт быть причиной апдейта.

            Ну и нужно не забывать, что там еще замешано куча проприетарного софта, про который мы ничего не знаем, типа тех же кодеков. Поди знай в чем именно проблема. Можно попробовать иногда выяснить в kb у Адобов, но естесственно никто и никогда прямо на это не ответит.
            Ответить
        • *голосом тов. Сталина* нет адоби - нет проблемы
          Ответить
          • Ах если бы... на самом деле когда то, что наворотили в Адоби начнут все больше заменять ЯваСкриптом проблемы начнут только плодиться. Опять же, не заслуга Адоби, просто так получилось, что код во Флеше в каком-то смысле находится в своей песочнице из которой не так просто выбраться. ЯваСкрипт находится гораздо ближе к цели, а особенно всякие там канвасы / опенГЛ и т.д. делают задачу локализации и борьбы с такими проблемами гораздо более сложной.

            Вот если бы кто-то сделал хорошую альтернативу Адоби - тогда другое дело, но пока ни JavaFX (и, наверное, никогда), ни Сервилат, ни Соль не дотягивают. Вся надежда была на Соль, но как-то они пошли совсем по другому пути, не пытаясь создать платформу для маленьких встраиваемых приложений на основе библиотек уже имеющихся у пользователя, вместо этого каждое приложение сразу становится монструозных размеров... Вобщем, хз.
            Ответить
            • Про кучу дырявейших дыр и сплоитов чуть ли не на уровне выполнения произвольного кода во флеще - слышал и не раз; про яваскрипт что-то моя осведомлённость куда более скромная. Память выжрать можно, гадости кроссайтовые сделать тоже, и даже куку украсть.
              Я уже лет шесть говорю, что флещ не нужен. Сейчас, когда призрак пятого хтмля бродит над горизонтом, флещекапец выглядит осмысленным. Мне, собсна, хватило того, что они перестали обновлять его под мобильные платформы.
              Ответить
              • Ну, кому-то не нужен, так кому-то и интернет вообще не нужен, это ж дело добровольное...
                А по поводу ХТМЛ5 - я в последнее время, если кто-то из друзей просит чего-то с сайтом помочь, меняю DTD на <!DOCTYPE html> и честно им сообщаю, что теперь у них сайт на ХТМЛ5 - все очень довольны: пользуются передовыми технологиями.
                А если серьезно, то ХТМЛ в принципе плохая технология для описания всего, кроме форматированого текста, да и с этим куча проблем. Но главная проблема в том, что это очень высокоуровневый фреймворк, который не позволяет более фундаментально что-то в нем поменять, или настроить. Ну, не предназначен он для написания програм даже отдаленно похожих на десктопные. А потребность такая есть.
                Программирование на ЯваСкрипте мегаубогое, конечно, бывает и хуже, но даже Флеш - и то лучше.

                То, что в вебе будет продолжать использоваться ХТМЛ+ЯваСкрипт+КСС, только отдаляет создание интересных / новаторских програм и отталкивает серьезных программистов.

                По поводу выполнения произвольного кода - везде хватает. Я знал про пару таких уязвимостей связанных с Актив Скрипт (это Майкрософтовский рантайм) которые вызывались из браузерного ЯваСкрипта. Но, опять же, мы очень мало что знаем про такие ошибки. Я просто имел опыт сообщения багов связанных с безопасностью - они ни в баг трекер никогда не попадают, ни информации о том как, и пофиксили ли вообще нет. То, что мы не знаем о наличии багов такого характера не значит, что их нет. Предпосылки - есть, похожие ситуации - были, так почему бы не предположить, что они есть и тут?
                Ну и не в последнюю очередь безопасность связана с возможностями. Пока ХТМЛ мало чего умеет - он более безопасен, но когда он будет уметь хотя бы то же самое, что Флеш - отнюдь не факт, что он будет таким же безопасным. Никаких специальных качеств располагающих к улучшенной безопасности в нем нет.
                Ответить
                • > Программирование на ЯваСкрипте мегаубогое
                  Никогда не видел ActionScript, потому ничего сказать не могу. JS меня вполне устраивает, я даже встроил в своё приложение рантайм от мозиллы и доволен.
                  > это Майкрософтовский рантайм
                  Ну так это дырка под один браузер, а их штук пять основных только.
                  > когда он будет уметь
                  А зачем ему это уметь-то? Потоковое видео искаропки играть сможет. Рисовать на канве - тоже. Чего ещё не хватает? Для меня, инфернет-пользователя с многолетним стажем, всегда флещплеер ассоциировался именно с видевом на ютубе. Ибо никакого другого способа просто вот так взять и воспроизвести файл (встраиваемый MS WMP в расчёт не берём) не было. Ну и плюс бгомерзкие еретичные баннеры, да.
                  > располагающих к улучшенной безопасности
                  А вот тут как раз всё будет зависеть от пяти вендоров, а не одного. Не может быть такого, чтобы можно было использовать одну и ту же уязвимость и под ослом на виндомашине, и под огнелисом на линуксовой.
                  Единственный минус, который я вижу - приложения будет гораздо проще реверсить.
                  Ответить
                  • Пока что с потоковым видео лажа полная, и надежд на нормальное решение нет / очень мало. Из не-проприетарного только Теора Ворбис, но ее только Мозилла поддерживает (может быть и Опера - но никому это не интересно). Это значит что, даже при том, что будут пользоваться проприетарными форматами, будут использовать 2 а то и 3 варианта одного и того же видео, а это некисло сказывается на оплате хостинга, кешировании и других аспектах инфраструктуры.

                    Точно такие же дырки были и практически 100% будут во всех браузерах, в той же Мозилле есть XPCOM - аналог АктивХ, который практически наверняка можно так же эксплуатировать. Просто большинство эксполоитов направлены на организации, а не отдельных пользователей, поэтому МСИЕ им интереснее, но если Мозиллу станут использовать так же часто, то и там найдется. Прециденты с кривой реализацией SSL у Мозиллы были, так что чего уж там.

                    Уметь делать то, что сегодня умеет Флеш нужно для того, чтобы технология вцелом развивалась. Пока что, проекты которые переходят с Флеш на ХТМЛ теряют возможности, их поддержка становится затратнее, а общее качество - хуже. Например, плеер Ю-туба бажный, тормозной и не умеет кучи всего, что умеет Флешевый плеер (даже перемотка у него не получается), а более серьезные системы - так там вообще караул. Люди уходят от Флеша не потому что технология плохая, а потому что вендор - мудак, и на него страшно полагаться.

                    Что касается полезности Флеша - есть очень много мест где вы даже не знаете, что пользуетесь Флешем. Например:
                    - аттач файлов в Г-маиле.
                    - загрузка и упаковка большой части ЯваСкрипта Фейсбука. Загрузка картинок / снимки с вебкамеры в Фейсбуке.
                    - онлайн обучение - это практически исключительно Флеш, и ХТМЛ так просто не сможет.
                    - естесственно, куча игрушек.
                    Ответить
                    • А ещё оно ставит LSO cookies, да. Баннеры я упоминал. К сожалению, не могу ничего сказать про гмейл, ибо им не пользуюсь, но аттач делается и через JS нормально; ничего не могу сказать про фейсбук, равно как и про необходимость получения снимка с камеры, наверняка это кому-то надо; проприетарные игрушки - почти единственная более-менее вменяемая ниша. И то, я ещё помню, "чего вы хотели, это же линукс".
                      Ах, да, совсем забыл - удивительная лошадь. Только что теперь каналы стали жирнее и флещмульты проще посмотреть на том же ютубе.

                      P.S. А так - ничего, нормальная нишевая технология, не серебряная пуля и ладно.
                      Ответить
                      • LSO != cookies... Это вообще профанация и непонимание сути происходящего. LSO никуда ничего не посылает, он не добавляется по-умолчанию, да и вообще никак, к запросам, которые шлет браузер с вашей страницы. Это данные которые приложение сохранило на вашем компьютере. Прочитать чужие данные (типа своровать кукис) другое веб-приложение не сможет никак. Скандалы связанные с LSO были не изза того, что их кто-то воровал, а изза того, что баннерообменники их используют для сбора статистики - со своих же баннеров. Это в какой-то степени не красиво, но законно.
                        Более того, когда у ХТМЛ будет нормально поддерживаться локал сторидж - вы получите точно такую же историю с ним, при чем хуже, т.как в отлицчие от LSO там его еще и шифровать будут скорее всего, чтобы пользователь вообще не догадался чего о нем записывают. Тут EULA надо вдумчиво читать, а не желтую прессу.

                        То, что вы лично не пользуетесь ФБ / Г-мейлом ни на что не влияет, пока ими пользуется пару сотен тысячь других пользователей. Есть еще такие люди амиши - живут где-то в американской тундре охотой и земледелием и не признают никакие современные технологии. Но пока таких 0.00000001% - никого это не интересует.
                        Ответить
                        • Спасибо, капитан, я знаю, что такое LSO. И что они не совсем кукисы. Только при всём при этом это создаёт некоторую проблему в безопасности, если я не хочу, чтобы за мной следили. И я буду делать так, чтобы за мной не следили.
                          Я не сторонник ретроградства и луддитов, просто гуглопочта для меня ничем не выделяется в ряду таких же почт, которых десятки. Не пользуюсь только по той причине, по которой не использую сервисы от гугола вообще. Мордокнига мне неинтересна по другой причине - мне нечего о себе писать в сосальные сети, у меня нет там ни друзей, ни знакомых, а всех прочих людишек я ненавижу лютой ненавистью.
                          Это не умаляет ни значимости их сервисов для человечества, ни проделанной работы, ни то, что флещи совсем бесполезны. Только вот помри оно завтра - мир не остановится, придумают что-то ещё.
                          Ответить
                          • chmod -w ~/.macromedia

                            И проблема со слежкой решается :)
                            Кроме того, я же говорю, что проблема не конкретно во Флеше, а в ЕУЛА. И браузеры о вас точно так же собирают инфу. Вот, недавно вообще в шоке был: купил лапоть, новенький совсем, поставил Федору, и полез что-то искать в Гугле, и не в чем-нибудь, а в Огненой лисе, появляются результаты поиска, и вдруг ссылка (которую я действительно раньше посещал) подсвечена как посещенная - это при первом запуске девственно чистой системы, первый раз открытый браузер, и IP динамический. В итоге до меня дошло, что это связано со stackoverflow, где я зарегистрирован используя гугловские координаты - но все равно страшно.
                            Это не проблема безопасности, то, что делают банерообменники абсолютно законно, не использует никакие баги, или непредвиденные возможности системы. Вы на это сами согласились по пользовательскому соглашению, более того, вам дали возможность фильтровать / запретить всем / поменять размер квоты, и все через графический интерфейс, CLI интерфейс - да как хотите. Не достаточно предупредили - да, возможно, но вы же не подадите в суд на рекламу за то, что там под звездочкой мелким шрифтом было написано что-то что вы не прочитали. Это даже не мошенничество. Не приятно - да, но ничего противозаконного.
                            Ответить
                            • Не могу, у меня не блинукс, а вполне так себе маздай.
                              > браузеры о вас точно так же собирают инфу
                              Если в браузере не стоит *-бар, то никакую стороннюю инфу они явно передавать не должны без ухищрений. А так - у меня отрублен флеш файерволом всем, кому не надо; аналогично скрипты, аналогично куки-рефереры.
                              Я реально за последние несколько лет не видел рекламы. Точно настроенный файервол, браузер и дополнения к нему. Хуже было только с lm, там реклама по псевдопротоколу data://, но и её вырезал или через гризманки, или ещё через что. Время от времени меня пробивает на паранойю и я пытаюсь проверить, не шпионит ли кто за мной. Пока ничего такого не находил.
                              Ответить
                              • Так а инфа-то не сторонняя. Все делается в рамках закона. Гугл не стесняясь собирает информацию. У Мозилы была фишка, и в какой-то сборке они ее даже по умолчанию включили - было много возмущений по этому поводу. ИЕ - так тот понятное дело все складывает в закрома родины. Сафари - так вообще может быть даже и геолокацию вещает. Да что-там, с Эппловскими новыми патентами, вам его еще и на расстоянии отключить от интернета могут и т.п.
                                Но более того, если бы ваша информация была действительно чрезвычайно интересна кому-то, у кого есть возможность ее получить, то получили бы... Был процесс много лет назад над AT&T, где бывший сотрудник поведал о всяких некрасивостях и посягательстве на часную жизнь. Процесс благополучно провели за закрытыми дверями, никого не наказали, только выдали ваучер AT&T на неприкосновенность.
                                Просто мы в странах третьего мира - да кому мы нужны? Если бы мы еще хоть на оборнку работали или что-то такое... а так... разве что чисто случайно.
                                Ответить
                                • Здравый смысл. Только здравый смысл, ничего кроме.
                                  Ответить
                    • Вы играете во флеш игру во флеш контейнере прямо на странице и при этом
                      > даже не знаете, что пользуетесь Флешем
                      ? O_o
                      Ответить
                  • Вообще, на сегодняшний день все что в ЯваСкрипте требует работы с бинарными данными - это Флеш. Многие так же используют Флеш для лучшей / кроссбраузерной парсилки XML (мало того, что быстрее, так еще и всякие обходные маневры не нужны). А если кто по-сообразительнее окажется, так будут AMF использовать.
                    Ответить

    Добавить комментарий