• На что проверять строку, введенную со стороны пользователя на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это хороший вопрос, который довольно часто задают новички, поскольку они все поголовно подвержены очень распространенному заблуждению - что опасность заключается в самих данных, и их, следовательно, можно как-то "обезопасить". Что "данные" в приложении - это некий универсальный абстрактный объект, который можно универсально же обработать.

    Но если подумать, то ответ становится очевидным: не бывает таких "проверок", которые автоматически делают данные "безопасными".
    Поиск таких универсальных проверок - это такая же глупость, как поиск "базовых правил безопасности для человека". Ты встречал кого-нибудь, кто все время носит каску, наколенники, бронежилет и презерватив? Независимо от того, собрался он кататься на роликах, на войну, или на свидание?

    Данные не бывают "опасными" или "безопасными" сами по себе.
    Всё зависит от контекста.
    А любая обработка "просто на всякий случай" тупо испортит данные.
    К примеру твоя strip_tags() изуродует математический текст, в котором встречаются символы "больше" и "меньше".

    Поэтому и надо форматировать данные перед использованием, в зависимости от конкретного контекста, а не заранее. Используем в SQL? Применяем подготовленные выражения. Используем в HTML? Применяем htmlscpecialchars. Используем в URL? Применяем urlencode. Используем в яваскрипте? Применяем json_encode. И так далее. Тебе уже самому должно быть смешно, глядя на этот набор "базовых проверок", если их накатывать все скопом.

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

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Дочерние страницы? А может правильней страница и ее компоненты? И тогда сразу вопросы отпадут:
    1. страница Register и Home - во /views
    2. компоненты SignIn и SignUp (только видимо изменить их название на SignInForm и SignUpForm) - в /components/register
    Ответ написан
    5 комментариев
  • Обучение по типу системного администрирования, но более широкое?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Не существует никакого отечественного железа и ОС. Всё, так называемое - в разной степени позаимствовано и обработано напильником. Соответственно, все "православные" сертификации - это фикция, не имеющая отношения к реальным знаниям и учебному процессу.

    Смысл имеют цисковские, редхатовские, LPIC и т. п. корочки.
    Ответ написан
  • Чем PHPMailer отличается от обычной mail() функций??

    TemaSM
    @TemaSM
    Fullstack, DevOps, InfSec
    Функция mail() в PHP по сути вызывает встроенную в систему почтовую программу - стандартно, это sendmail в linux (также, возможно использовать qmail, postfix, но для этого надо сначала сконфигурировать PHP через .ini файл).
    Подробнее про Mail в PHP: https://www.php.net/manual/ru/book.mail.php
    И про основную проблему кроссплатформенного использования: https://habr.com/ru/post/26518/

    PHPMailer - это мощная библиотека, реализующая почтовые транспорты, а не использующая sendmail как стандартная mail() функция. Имеет из коробки большое количество возможностей, таких как (в списке представлена лишь малая часть):
    • полная поддержка SMTP, Qmail, POP3, IDN, DKIM;
    • поддержка SSL и TLS;
    • работает на любой win32 и *nix платформе;
    • гибкость отладки;
    • определяемые вручную заголовки писем;
    • совмещение нескольких сообщений и вложений;
    • встроенная поддержка изображений;
    • умеет посылать письма с множественными: адресатами (TO), копиями (CC), BCC и REPLY-TO;
    • многослойные/альтернативные сообщения для клиентов, которые не могут читать HTML письма;
    • поддержка 8 бит, base64, бинарного режима, и пригодного для печати формата;
    • перенос слов (word wrap);
    • сообщения в виде HTML (шаблоны);
    • библиотека проверена на множестве SMTP серверах: Sendmail, qmail, Postfix, Imail, Exchange, Mercury, Courier;
    • библиотека используется под капотом таких гигантов: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla;

    Подробнее можно прочитать тут:
    https://jino.ru/journal/articles/pochta-phpmailer/
    https://www.sesmikcms.ru/pages/read/ischerpyvajusc...

    Помимо PHPMailer существуют и другие крутые библиотеки, оставляю список для интересующихся:
    Swiftmailer
    (Symfony) Mailer

    Если вы активно пользуетесь функцией mail() при разработке на PHP и до сих пор ещё не сталкивались с проблемами при её использовании на хостингах или на своих собственных серверах без соответствующего правильно настроенного окружения, то mail() вам идеально подходит. А когда столкнётесь с проблемами или захотите иметь больше возможностей из коробки, станут очевидными плюсы PHPMailer и других специализированных библиотек.
    Ответ написан
    1 комментарий
  • Что изучать дальше в вебе?

    php666
    @php666
    PHP-макака
    Внесу немного негатива. Почитай это - ebanoe-it.ru/2021/01/12/staff-shortage/
    Теперь, когда ты видел список, я скажу тебе следующее: а вот черт знает, что тебе в вебе изучать.
    Сейчас такая тенденция в сфере, что каждая вакансия - как рисунок калейдоскопа, т.е. абсолютно разные требования. Знания "hmtl, css, jquery, php, mysql" сейчас стоят примерно как зарплата кассира в магазине.

    Проблема в том, что работодатели сегодня хотят то, что ты уже должен был выучить ещё вчера. Веб разросся до уровня раковой опухоли, один зоопарк SPA чего стоит. Изучай-не изучай, но без реальной практики на боевых современных проектах твои мечты относительно "нормально зарабатывать" стремятся к нулю.

    Если тебе меньше 25 лет, то крайне советую броcить нафиг веб и уйти в нормальный ЯП. Хотя бы в туже Java/PLSQL - сможешь потом до пенсии в банке сидеть, Core кодить. А веб в сегодняшнем виде - это абсолютно гиблое вливание времени, через 5-10 лет всё изменится до неузнаваемости, технологии поменяются и будешь опять учиться.
    Ответ написан
    Комментировать
  • Можно ли сделать так что бы каждый третий элемент, не имел margin-right?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    :nth-child(3n+3)
    Ответ написан
    Комментировать
  • Как сделать почтовый сервер для принятия входящей почты?

    sashkets
    @sashkets
    Прекратил отвечать после 24.02.2022
    гайда Вам никто не даст, а вот если эту работу разбить на этапы то можно много постичь по ходу

    -ДНС
    -Сервисы smtp, imap, pop3
    -Courier-imap или Dovecot?
    -Учетные записи пользователей системные или виртуальные? Виртуальные удобнее, да и база данных у Вас уже настроена и работает. Если вдруг потребуется прогонять входящую почту через фильтр procmail, то придется вводить системные учетные записи, потому что с виртуальными procmail не работает
    -Настройка шифрования. Сервисы smtps, imaps, pop3s
    -Настройка smtp-авторизации
    -Установка и настройка антивируса и антиспама
    -Установка веб-интерфейса для работы с почтой
    -Фильтр входящей почты procmail. Необязательно, но ознакомиться стоит

    на полгода достадочно
    Ответ написан
    2 комментария
  • Как это понять?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    1)let arr = str.split(' ');
    Возьмет строку, в данном случае 'aa bb cc aa bb aa', разобьет на части используя пробел как разделитель. В результате получим:
    let arr = ['aa', 'bb', 'cc', ' aa', 'bb', 'aa']
    2) Следующий кусок кода просто произведет подсчет одинаковых частей.
    return arr.reduce((acc, rec, index) => {
        return (typeof acc[rec] !== 'undefined')
          ? { ...acc, [rec]: acc[rec] + 1 }
          : { ...acc, [rec]: 1 }
      }, {});
    Рассмотрим его подробнее. Начнем с аргументов:
    acc – последний результат вызова функции, он же «промежуточный результат».
    rec – текущий элемент массива, элементы перебираются по очереди слева-направо.
    index – номер текущего элемента.

    Что собственно происходит:
    -typeof acc[rec] !== 'undefined' проверит есть ли в объекте 'acc' ключ 'rec'.
    - и если мы уже встречали такой( например когда "aa", но уже во второй раз ), тогда изменить значение этого ключа прибавив 1.{ ...acc, [rec]: acc[rec] + 1 }
    - если же такого ключа еще не было, то создадим его со значением 1, ибо он в первый раз попался{ ...acc, [rec]: 1 }
    Ответ написан
    6 комментариев
  • Какой наиболее приемлемый способ наблюдения на другим телефоном?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Если МТС, то есть рекламируемый "МТС-Поиск", но он батарею жрет - как не в себя... Возьми тел ребенка, подключи к системе, придет смс (на тел ребенка) - подтверди. Все, система отслеживает положение и позволяет "слушать" его микрофоном и "видеть" камерой (сам не пробовал, потому что приложение жручее, но базовый функционал использую).

    Да, за нами никто не следил. Я в 12 лет уезжал к бабушке на другой конец города и только по приезду (а зто два часа на транспорте) мог позвонить - если двушку дадут. Но мы жили в другом государстве, где деньги особой роли не играли. А в нынешнем - педофильская истерия, на которой мошенники стараются заработать...
    Ответ написан
    1 комментарий
  • Как сделать круг с 12 картинками расположенными по кругу?

    LenovoId
    @LenovoId
    svg, css,js
    Иконок у меня нету - вставите их в g.sings а дальше обычные координаты по осиX и по осиY

    Ответ написан
    1 комментарий
  • Где вы делаете макет для сайта?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Давно уже все в Фигму переехали.
    Ответ написан
    Комментировать
  • Существует ли тенденция на неадекватные требования на позиции Automation QA?

    inoise
    @inoise Куратор тега Карьера в IT
    Solution Architect, AWS Certified, Serverless
    Это везде проблема где бизнес не имеет компетенции и ищет сотрудников. Это нормально
    Ответ написан
    Комментировать
  • Купил ssl сертификат, но нет crt?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Похоже, ещё пока ничего вы не купили. Для начала - и ключ, и запрос на подпись вы генерируете сами, на доверенном устройстве. Затем CSR отправляете продавцу воздуха в удостоверующий центр, который из него делает валидный сертификат.
    Ответ написан
    Комментировать
  • Купил ssl сертификат, но нет crt?

    bingo347
    @bingo347
    Crazy on performance...
    .key - это приватный ключ, вообще, по хорошему его должны генерировать только Вы, как владелец будущего сертификата. Приватный ключ попавший к третьему лицу, в том числе к регистратору, должен считаться скомпрометированным и небезопасным.
    .csr - это запрос на подпись вышестоящим сертификатом, он содержит все данные будущего сертификата (домен, владелец и т.д.), а так же подпись этих данных через приватный ключ .key
    .csr необходимо отправить регистратору на подпись, подписанный приватным ключом регистратора .csr становится Вашим сертификатом .crt
    Так же любая из этих частей может быть в .pem формате, это текстовый формат, который описывает, что он хранит + сами данные (ключ/сертификат/цепочка сертификатов) в base64.

    P.S. писал все по памяти, за достоверной информацией лучше сходить в гугл. Но одно скажу точно, должен быть или .crt (бинарный формат) или он же завернутый в .pem
    Ответ написан
    1 комментарий
  • Купил ssl сертификат, но нет crt?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Внимание! Изменился адрес почты!
    Купил ssl сертификат

    Не, нифига. Факт уплаты денег не означает факт поставки товара :) CSR - файл запроса на сертификат, KEY - ключ сертификата. Теперь CSR нужно отправить в тот CA, у которого купили - в ответ придет CRT.
    Ответ написан
    Комментировать
  • Что за произвольная вставка(THSP) в phpstorm?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Шторм так отображает всякие не очень стандартные символы типа nbsp. В данном случае это https://www.compart.com/en/unicode/U+2009.
    Ответ написан
    Комментировать
  • Почему выкидывает ошибку "нарушение прав доступа" и деление на ноль, но ноля нет?

    vabka
    @vabka
    Токсичный шарпист
    Берёте дебаггер и по шагам выполняете код.
    Вместо вас тут никто отладкой заниматься не будет
    Ответ написан
    Комментировать
  • Где начинающему разработчику подглядеть примеры неговнокода?

    Adamos
    @Adamos
    Практика. Нужен опыт решения конкретных задач средствами языка.
    Фреймворки, паттерны и прочая архитектура не может изучаться на пустом месте, все это нужно цеплять на опыт.
    Говнокод, который решает задачу, лучше, чем красивая архитектурка, списанная с учебника.
    Когда понимаешь, как можно решать - можешь оценить качество решений. Без этого понимания будешь смотреть, как баран, и изобретать карго-культы.
    Ответ написан
    1 комментарий