• Нужно ли в таких случаях делать защиту от инъекций?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    во первых - у вас ошибка в коде, отсутствует кавычка: 'password,
    Во вторых - вопрос в корне не верный, если мы говорим о коде. Основное правило при работе с данными от пользователя - данным от пользователя нельзя доверять никогда.
    Отсюда же и второе правило - любые данные в запросах, если это переменные пришедшие из кода, а не прописанные буквами и цифрами в запросе, должны быть через подготовленные выражения, вы не можете гарантировать что где-то не пропустите пользовательский ввод в запрос.
    Ответ написан
    Комментировать
  • Нужно ли в таких случаях делать защиту от инъекций?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Нужно!!!
    Ответ написан
    Комментировать
  • Нужно ли в таких случаях делать защиту от инъекций?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нужно, разумеется.
    Это как в одном пошлом анекдоте про поручика Ржевского,
    - Запрос есть? Значит нужно.

    Если кажется, что защита слишком сложная, то либо вариант предложенный Сергей delphinpro в комментариях,
    $stmt = mysqli_prepare($connect, "INSERT INTO `bd` (`id`, `name`, `tel`) VALUES (NULL, ?, ?)");
    mysqli_stmt_execute($stmt, [$_POST['name'],  $_POST['tel']]);

    Либо, поскольку это ещё не везде работает, пишется маленькая функция на 5 строк, и кладётся в файл, где прописано соединение с БД
    function prepared_query($mysqli, $sql, $params, $types = "")
    {
        $types = $types ?: str_repeat("s", count($params));
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param($types, ...$params);
        $stmt->execute();
        return $stmt;
    }

    И дальше просто
    $sql = "INSERT INTO `bd` (`name`, `tel`) VALUES (?,?)";
    prepared_query($connect, $sql, [$_POST['name'], $_POST['tel']]);

    Просто, быстро, аккуратно, безопасно
    Ответ написан
    Комментировать
  • Как записать в переменную строку из JSON файла с#?

    @oleg_ods
    Используй StreamReader. С помощью метода ReadLine можно читать файл построчно.
    Ответ написан
    Комментировать
  • Как записать в переменную строку из JSON файла с#?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Это не json файл. ЧИтай его как обычный текстовый файл. Построчно или полностью
    Ответ написан
    Комментировать
  • Каковы перспективы языка С++?

    xez
    @xez
    TL Junior Roo
    На hh 3 831 вакансии.
    Не похоже, что "по факту не востребован, а вакансий по нему практически нет."
    Ответ написан
    Комментировать
  • Как защититься от разработчика?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    4. Как я могу обезопасить себя от возможной кражи сайта и доменного имени регистратором?

    А он кому-то так нужен? Не работайте с микрорегистраторами, работайте с серьезными конторами и никому нафиг Ваш домен не упрется. Вы явно преувеличиваете собственную значимость.
    2. Как я могу обезопасить себя от возможной кражи сайта и доменного имени фирмой

    Зарегить домен в одном месте, сайт в другом. После регистрации домена сменить пароль и больше его фирме не давать - все нужное она уже сделала. Не разрешать действия с доменом без личного присутствия.
    От кражи сайта - никак, они же его разрабатывают :)
    Ответ написан
    2 комментария
  • Как защититься от разработчика?

    @Drno
    Регистратором - никак.

    Заключай договор. где всё четко должно быть прописано

    Зарегистрируй все на себя, им выдай либо нужные права, на отдельного пользователя, если такое есть, либо данные для входа
    Ответ написан
    2 комментария
  • Курсы оператора БПЛА или самостоятельное обучение?

    @ewgenc
    Вы не сможете купить промышленный дрон за указанную сумму. БПЛА могут быть очень разными и сложными комплексами (например популярный нынче Орлан-10), и опыт работы с бытовыми квадрокоптерами вам не очень поможет. Работа с авиацией - это сертификация всего и вся, без сертификата будет сложно.
    Ответ написан
    2 комментария
  • Как выбрать подходящий курс в "Код будущего"?

    @tukreb
    Востребованным всегда будет БАЗА, а это алгоритмы и теории.
    Всякая фигня типо парсеры или боты - это МУСОР, если вы знаете базу то и сами их напишите.

    Поэтому выбирайте тот курс, который даст вам основные знания по программированию.
    Ответ написан
    1 комментарий
  • Как выбрать подходящий курс в "Код будущего"?

    @AVKor
    какой курс выбрать

    Тот, который интересен.
    Что реально поможет стать востребованным?

    Через 4 года как минимум? А кто это знает?

    Самым востребованным в стране может оказаться наличие опыта боевых действий, а вовсе не знания и навыки в ИТ.
    Ответ написан
    4 комментария
  • Сколько нужно серверов и каких образом они должны общаться, чтобы создать безопасную систему?

    @ewgenc
    Падает сервер с БД, ваши действия в дальнейшем? Резервирования мощностей нет, сервера под бекапы критически важных данных нет, репликации данных нет. Безопасное хранение пользовательских данных как будете реализовывать?
    Ответ написан
  • Можно ли питать 2 жеских диска и ссд?

    hint000
    @hint000
    у админа три руки
    Не сгорит.
    Если будет недостаточно мощности, то появятся суровые артефакты, либо просто зависнет ПК. Ещё раз: нет, не сгорит.
    зарядка, графический планшет, вебка но я их отключаю и постепенно включаю
    Нет смысла отключать, это всё очень мало потребляет.
    Ответ написан
    Комментировать
  • Хочу изучить основы информационной безопасности, какую книгу рекомендуете?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Рекомендуете ли вы книгу «Основы информационной безопасности» Е.В. Вострецова?

    Нет, не рекомендую.
    Это формальное учебное пособие, предназначенное для продажи, а не для изучения. Содержит много воды и пару процентов теории. Изложено максимально нечитаемо, любая техническая документация будет гораздо интереснее этого. Никакой практической пользы от книги не может быть, это введение в теорию, причём в теорию, как её видит наша бюрократическая машина.
    Опирается на публикации ~20-летней давности, исключительно отечественные.

    Единственная практическая польза тут может быть такая: если вы сдаёте предмет автору этой книги, купите и потешьте её самолюбие и кошелек.
    Ответ написан
    4 комментария
  • Какой тип данных у переменной a?

    bingo347
    @bingo347
    Crazy on performance...
    У переменной a указан тип встроенный массив [T; n]. Но у такого типа нет метода get_unchecked_mut(). Он есть у среза на массив [T]
    Тут нужно понять как в Rust работает оператор точка.

    Во-первых, мало кто пишет, но операторов точка на самом деле в Rust целых 2:
    - Доступ к полю структуры/кортежа/юниона
    - Вызов метода
    Rust различает их по наличию круглых скобок:
    struct S {
        a: i32,
        f: fn(),
    }
    
    impl S {
        fn a(&self) {}
    }
    
    let s = S { a: 0, f: || {} };
    s.a; // Доступ к полю
    s.a(); // Вызов метода
    (s.f)(); // Вызов функции по указателю, который лежит в поле f

    С доступом к полю все просто, компилятор преобразует его в смещение в памяти где это поле лежит относительно самой структуры.
    А вот с вызовом метода все интереснее, Rust пытается рассахарить его в одну из следующих конструкций в следующем порядке:
    S::a(s);
    S::a(&s);
    S::a(&mut s);
    <S as Deref>::Target::a(S::deref(&s));
    <S as DerefMut>::Target::a(S::deref_mut(&mut s));
    <<S as Deref>::Target as Deref>::Target::a(<S as Deref>::Target::deref(S::deref(&s)));
    <<S as DerefMut>::Target as DerefMut>::Target::a(<S as DerefMut>::Target::deref_mut(S::deref_mut(&mut s)));
    // ...
    и так пока либо не найдет вариант, который компилируется, либо пока не обнаружит что для очередного типа не реализован трейт Deref.
    Подробнее можно почитать тут: https://doc.rust-lang.org/stable/nomicon/dot-opera...

    У всех массивов есть Deref к слайсу, в core библиотеке прописано что-то вроде:
    impl<T, const N: usize> Deref for [T; N] {
        type Target = [T];
        fn deref(&self) -> &[T] {
            // ...
        }
    }
    За счет этого все массивы (а так же векторы, у которых тоже Deref к слайсу) получают методы слайса. И по тому же принципу String получает методы str.

    Ну и кстати, неявный вызов deref может еще происходить при взятии ссылки.

    Ну и из комментов к вопросу:
    Что тут делает unsafe код как раз понятно
    Однозначно понятно, он здесь делает UB так как обращается к памяти владелец которой неизвестен.
    Ответ написан
    1 комментарий
  • Каковы перспективы языка С++?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нет такого мнения в народе. C++ язык спорный, конечно, но весьма востребованный.
    Ответ написан
    Комментировать
  • Как устроена таблица у двух связанных коммутаторов?

    fzfx
    @fzfx
    18,5 дм
    далее коммутатор ищет целевой мак адрес в своей таблице, и находит, но как?

    просматривает таблицу коммутации в поисках MAC-адреса. если находит в таблице строку с этим MAC-адресом - берёт из этой строки номер порта.

    как он записывает его в своей таблице? типо switch2:port3?

    нет. MAC:port. это ведь таблица соответствия MAC-адресов и портов, логично?

    если он в линке с другим коммутатором?

    тогда если с этого другого коммутатора приходили Ethernet-кадры, то для каждого кадра он занесёт в таблицу коммутации MAC-адрес источника из кадра и номер порта, на который этот кадр пришёл (т. е. номер порта, к которому подключен другой коммутатор).

    Или их таблица коммутации обьединяется и нумерация портов второго коммутатора начинается следующего номера, на котором закончились порты первого коммутатора?

    нет. у каждого коммутатора своя таблица соответствия портов с MAC-адресами.
    Ответ написан
    Комментировать
  • У меня подгорела вилка на блоке питания для ноутбука, что делать?

    @tukreb
    Это значит, что у вас завёлся злой домовой, который посылает сильные разряды тока, чтобы уничтожить вашу технику ну или вас, если засуните туда пальцы. /s

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

    Виновата нагрузка

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

    В названных случаях искра объясняется практически схемой входной цепи подключаемой нагрузки. На входе у них стоит выпрямитель и конденсатор фильтра, от которого постоянным напряжением (примерно 310-340 вольт в пике) питается высокочастотный импульсный преобразователь.

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

    electrik.info/sockets/1293-pochemu-iskrit-vilka-v-...
    Ответ написан
    2 комментария
  • Какая скорость интернета по интернетометру?

    В одном байте 8 бит.
    93,25 / 8 = 11,66
    Ответ написан
    Комментировать
  • File.ReadAllText() заменяет русские символы на ?????, как исправить?

    @autyan
    У этого метода есть вот такая перегрузка:
    ReadAllText(String, Encoding)
    В вашем случае, нужно использовать её.
    Ответ написан