• Почему сторонний скрипт получает доступ к cookie?

    @KaminskyIlya Автор вопроса
    Я вот о чем. Скрипт www.test1.ru установил себе куки Victim=Vulnerable.
    Я ожидал, что "внешний" скрипт www.test2.ru/3dparty.js не получит доступ к данному куки. Но он это делает без проблем.
    Я чуть модифицировал скрипт так, чтобы он не только читал, но и устанавливал куки для домена www.test1.ru. И опять - успешно.

    Получается, что скрипт партнерских сетей имеет доступ на чтение и запись к кукам страницы, которая скрипт размещает. И это потенциальная уязвимость. Кроме того, возможность отслеживать пользователя.

    Вот модифицированный вариант скрипта:
    console.log( 'Cookie form foreign domain: ' + document.cookie );
    
    var script = document.createElement('script');
    script.innerHTML = 'console.log( "Cookie form victim domain: " + document.cookie )';
    document.body.appendChild( script );
    
    var h = window.location.host;
    document.cookie = '3dParty=Track; domain='+h+'; path=/; max-age=3600; samesite=strict';
  • Почему сторонний скрипт получает доступ к cookie?

    @KaminskyIlya Автор вопроса
    Я ожидал, что в первом случае команда document.cookie вернет undefined, т.к. должна была сработать защита от 3d party cookie при XSS. Но по факту: защита не работает?
    Получается это можно использовать для отслеживания пользователей.

    Мой вопрос был задан в рамках моей статьи https://habr.com/ru/post/472310/, как демонстрация уязвимости cookie.
  • Вопрос к слабовидящим: как лучше уведомить о наличии специальной версии сайта?

    @KaminskyIlya Автор вопроса
    Если это иконка, можно использовать иконки-шрифты - тогда она окрасится в цвет текста (хотя, если пользователь захочет поменять шрифты...

    Многие используют шрифт или его части от fontawesome.io (ставший уже стандартом де-факто). А станет ли пользователь специально "прибивать" этот шрифт? С другой стороны, за него это может сделать какой-нибудь вспомогательный аддон.
    Я могу здесь ошибаться, но кажется в описании шрифта указывается, что он не для "печатных" символов (в шрифте указывается диапазон кодов символов им представленных). Поэтому такой аддон должен учитывать эту информацию, и не подменять иконочные шрифты на системные.
    Я это к тому, что использование иконочных шрифтов - это хорошая идея. Правда для старых браузеров приходится делать картинки-спрайты. А с ними уже известные проблемы (background-image).
  • Вопрос к слабовидящим: как лучше уведомить о наличии специальной версии сайта?

    @KaminskyIlya Автор вопроса
    Огромное спасибо, за столь развернутый ответ. Весьма ценная информация.

    Полностью залитый белым фон выглядит не очень и для больших картинок может быть слишком ярким

    Правильно ли я понял, что Вы имеете в виду здесь это: "не используйте большие картинки с большой площадью покрытия белом тоном, поскольку при изменении фона страницы на, скажем, темный, эта картинка будет сильно "бить" по глазам"?

    не используйте тёмно-серый текст на светло-сером фоне

    А вот мне интересно - на Хабре/Гиктаймсе/Тостере цвет текста - #333, а фона - #DEE1E5. И в твиттеровском bootstrap'е аналогичный цвет текста. С вашей точки зрения - это ещё допустимо или ...?

    не используйте background-image для вставки картинок, которые что-то обозначают, а не просто украшательства.

    А вот здесь действительно интересно. Понятно, что значимая информация не должна передаваться через background-image. Это даже не обсуждается. А вот что касается украшательств... Предположим, я реализую отбивку блока при помощи создания тени. Да и еще у блока градиентная заливка. Делаю это через background-image: url (для браузеров, которые не умеют box-shadow & linear-gradient). Но что случится, если человек захочет поменять фон на темный? Вопрос риторический. А решений. Я даже тут не вижу. Вот если бы был тот самый медиа-тип. Я хотя бы в нем, отключил те самые background-image. Но...
    Вы не первый человек, который против такого подхода. Я вам уже писал про печальный опыт Opera с их медиа-типом braile. Значит, действительно, идея не продумана. Хотя на мой взгляд - тут нужен целый комплекс идей, а не одна-две.

    Что касается предопределенных foregroundColor, и т.п. В IE можно использовать для цветов именованные константы типа: windowText, buttonText, scrollbar и т.п., которые учитывают системную схему и ваши предпочтения. Эти константы прямо следуют из WindowsAPI (https://msdn.microsoft.com/ru-ru/library/windows/d... Работает, если не ошибаюсь, с IE5. И даже сейчас это не выпилили. Но, у верстальщиков не прижилось. (Зато одно время многие баловались изменением цвета полос прокруток у браузеров). Наверное, виной тому негативное отношение к этому браузеру. Хотя эта и ваша идея, вообще, здравая.

    Поэтому, где-нибудь вверху страницы можно оставить заметку вроде "чтобы увеличить шрифт, используйте ctrl + + или cmd + +"

    Вот тут не соглашусь, поскольку я как раз таки начал этот топик, чтобы уйти от подобной схемы.

    В целом я склоняюсь к мысли, что для создания удобного сайта для слабовидящих, нужен лишь правильный guideline для дизайнеров-верстальщиков с образцами, картинками (блекджеком и девками). И чёткое следование ему. И никаких "специальных версий" и "уведомлялок".
  • Вопрос к слабовидящим: как лучше уведомить о наличии специальной версии сайта?

    @KaminskyIlya Автор вопроса
    Влад, но ведь одним масштабированием дело не обходится. Нужно ведь ещё и контрастную схему как-то включить (читай - применить патч-стили).
    А как её включить? Сейчас тупо все делают мелкую кнопку "Версия для слабовидящих", которую только зрячие и видят. А иногда даже зрячие её не могут найти.

    P/S
    Мы не только делаем масштабируемую верстку, но и подгоняем стилями размер шрифта для разных мониторов. Например 14px будет смотреться крупным на экранах 800-1024 (нетбуки), но уже выглядеть мелко на экранах 1280-1680.
    Вопрос был бы просто решаем, если бы в CSS был предусмотрен специальный медиатип, как на пример для экранных читалок: speech. Похоже мне нужно обращаться с предложением в w3c.org )))
  • Как научить автотест работать с alert окнами?

    @KaminskyIlya
    Такой вопрос: а если попросить разработчиков front-end'а не использовать alert, а заменить на спец.функцию fAlert. Ну или перегрузить alert собственной оберткой типа:

    (function()
    {
    var oldAlert = window['alert'];
    window['alert'] = function(msg)
    {
    /* здесь код, который помогает Selenium'у его обрабатывать */
    ....
    // если не обработан, вызываем старый обработчик
    if ( !processedBySelenium) oldAlert (msg);
    }
    })

    Впрочем, в Firefox такая перегрузка не работает.
  • Как разобраться в исходном коде такого проекта как Mysql?

    @KaminskyIlya
    Илья: возможно, у вас хорошо развита интуиция, если вы быстро находите "где" и "что" нужно править.
    Насчет "учить не надо" - ну это смотря какую цель вы ставите: написать "на скорую руку" заплатку или разобраться в проекте, чтобы влиться в команду. Ну или просто just-for-fun, для общего развития, так сказать. Соответственно, разные цели - разные подходы.
    Но в целом, с вами согласен.
  • Тест-кейсы, тест-планы и чек листы, которые непосредственно используются в работе?

    @KaminskyIlya
    Старая шутка: Настоящий тестер входит в бар, вбегает в бар, вползает в бар, влетает в бар, впрыгивает в бар, и заказывает один стакан пива, пол стакана пива, 0,5 стакана пива, -2 стакана пива...
  • Что делает программиста программистом?

    @KaminskyIlya
    раз уж такая пьянка))

    Программист самоучка = new Программист( {любовь_к_процессу, спортивный_интерес, желание_познавать_мир, нестандартное_мышление, аналитический_склад_ума} )
    .прочитатьМногоКниг( "Д.Кнут", "А.Саломаа", "Д.Блох", "К.Бек", ... )
    .многоКодитьJustForFun()
    .посещатьКурсыИСеминары()
    .изучатьДругиеПроектыOpenSource()
    .создатьИРазвиватьСвойОткрытыйПроектДляЛюдей()
    .завестиСебеБлог()
    .пытатьсяНайтиРаботуПоВкусу()
    .работатьВУдовольствие();

    ОбычныйЧеловек студент = ВУЗ.факультетИнформатики.обучитьПрограммиста( ... );
    студент
    .посещатьЛекции()
    .изучатьЛитературу()
    .выполнятьЛабораторныеРаботы()
    .сдаватьЭкзамены()
    .написатьДипломную()
    .защититьГосы()
    .устроитьсяНаРаботу()
    Программист новый_программист = (Программист )студент.работатьПоСпециальности();

    ИнститутПереквалификации курсы = new КурсыПрограммистов()
    курсы.принять( {любых_кто_думает_что_будет_зарабатывать_много_денег, бывший_офисный_планктон, менеджеров_не_удачников, и пр.} )
    курсы.взять( бабло )
    курсы.читатьЛекции( две_недели )
    курсы.принятьЗачеты( не_обязательно )
    Программист слушатель_курсов = курсы.выдатьСертификат()
  • Конструкция "class{}Name;" вместо "class Name{};"?

    @KaminskyIlya
    Объект анонимного класса создается сразу же по месту его описания. Т.е. больше создать объектов с таким же классом у вас не получится, т.к. вы ему не присвоили имя. Более полно данная конструкция выглядит так:
    ClassName { class_defenition } instanceName1(arguments), instanceName2(arguments);
    Вы объявляете класс (прототип будущих объектов) и даете ему имя ClassName. И сразу же создаете две его переменные instanceName и, instanceName2.
    Далее вы можете написать: ClassName instanceName3 = new ClassName(arguments), чтобы создать третью переменную.

    А если вы напишете так:
    { class_defenition } instanceName1(arguments), instanceName2(arguments);
    Вы создадите переменные instanceName и, instanceName2 с таким прототипом, но создать instanceName3 у вас уже не получится.

    Тоже самое касается структур.
  • Как выполнить Dependency Injection локальных переменных?

    @KaminskyIlya Автор вопроса
    Большое, спасибо! Кажется, то что надо.
  • Как тестировать закрытые методы класса?

    @KaminskyIlya Автор вопроса
    Премного благодарствую! Я совсем запамятовал о такой возможности.
    Кажется, таким же образом можно устанавливать поля закрытых переменных класса (если для них нет публичных сеттеров).
  • Существуют ли особые методики тестирования 3D-приложений?

    @KaminskyIlya Автор вопроса
    mamkaololosha: Коллеги, давайте без лишних эмоций. Только по существу. Вообще ни во что не играю - времени нет. Логвинова - первый раз слышу.
  • Существуют ли особые методики тестирования 3D-приложений?

    @KaminskyIlya Автор вопроса
    Раньше тестирование UI-интерфейса тоже считалось невозможным. Пока не появились такие продукты, как Selenium.
    Еще Яндекс, кажется, развивает методику тестирования соответствия визуального оформления веб-страниц на разных устройствах. Пока сравнение ведется сравнением картинок. Качество шейдеров, теоретически, можно было бы тестировать по подобной методике...
    С FPS вопросов нет. Его-то можно измерить. А значит реально написать тест, контролирующий приемлемое быстродействие для приложения, после проведенного рефакторинга или апгрейда.

    Может быть у читателей, занятых в подобных сферах разработки, есть еще какие-то мысли.