• Как использовать токены для аутентификации в API?

    bigton
    @bigton
    Web-программист
    Как сделал я.

    От классических сессий при работе через API отказался.

    1. Для авторизации пользователь вводит логинпароль, устройство отправляет их по https на account/auth
    2. account/auth выдает token (token_id:token_val) и secret
    3. все дальнейшие запросы устройство отправляет по http указывая token и подписывая запросы с помощью secret

    Как работает.

    Сервер получает запрос, видит что пришел token, разбивает его через двоеточие на input_id и input_val. Выбирает из базы токен с пришедшим input_id, получает из базы значение token_val и secret. Сравнивает input_val и token_val. Если в базе нашелся токен с нужным id и значения val равны, пришло время проверить достоверность запроса.

    Клиент помимо токена передал sign (подпись), которую сформировал так (например) secret+api_path+query_param. На стороне сервера вам известно api_path и api_param, а secret выбрали из базы. Хешировать подпись принято через hmac().

    Помимо токена и подписи можно передавать time и так же класть его в sign, и на стороне сервера отсекать запросы запросы которым больше 60 сек.

    Таким образом.

    Если кто то слушает ваш канал, он не сможет подделывать запросы (а значит компроментировать), и из-за проверки времени жизни запроса не сможет вечно получать данные по однажды перехваченного запроса.

    А в базе токены можете хранить пока клиент сам не запросит их уничтожения и сохранить время последного обращения через токен, и удалять токены которые не использовались более 60 дн.
    Ответ написан
    9 комментариев
  • Какая стоимость звонков на voximplant и есть ли документация (или справка) на русском?

    @aylarov
    Статей на русском достаточно много на Хабре
    1. 0,2 цента в минуту
    2. Тут должен быть voximplant.com/docs/rates/voximplant_outbound_rate... , как вариант, можно сделать звонок и посмотреть сколько списалось
    3. 0,2 цента в минуту (+ может потребоваться SIP-регистрация)
    Ответ написан
    Комментировать
  • За какой период времени можно выучить PHP до уровня совершенства?

    dzheka3d
    @dzheka3d
    Всё выучить невозможно, изучить общий синтаксис и натренироваться писать простые модули можно за пару дней. А дальше вы по мере надобности будете пользоваться другими функциями, обращаясь к мануалу.
    В голове держатся всегда только те функции и действия, которыми постоянно пользуетесь, или пользовались часто ранее (они отложатся), остальное - мануал.
    Мне понадобилось полторы недели, чтобы создать простой сайт с добавлением новостей, редактированием их, голосования, комментарии, добавления картинок. Спустя год, я мог написать что угодно, но обращаясь к гуглу и мануалам.
    Кстати, тоже интересно, может я один такой по гуглу шарюсь когда нужно что-то не знакомое сделать или сделанное давно и однажды?
    Ответ написан
    7 комментариев
  • Как получить только одно поле mongodb в fat-free framework?

    @Kano
    Пользуйтесь проекциями при фильтрации ссылка
    db.things.find({}, {passhash:true})
    Ответ написан
    1 комментарий
  • Какие основные и наиболее востребованные функции у CRM-систем?

    @cmo
    Интернет-маркетинг, спорт, дети и деньги
    Отвечаю как представитель разработчика CRM-системы

    1. если планируете разрабатывать под конкретного заказчика - то проведите аналитику бизнес-процессов, напишите и согласуйте ТЗ и вперед. Здесь может быть любой сценарий: и склад, и дебиторка, и документооборот, и...

    2. если речь о массовом продукте, то определите целевую аудиторию, пообщайтесь с представителями этой аудитории, поймите что им нужно. Здесь также от и до.

    Если пользователи продвинутые, то им без разницы веб это решение, или десктоп.

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

    @hudozhnin
    Отвечаю как носитель опыта менее года в вялом неудачном проекте по внедрению одного из лидеров CRM рынка:

    1. "Автоматизация" процесса продаж, маркетинговых процессов и аналитика - самое популярное применение CRM систем.
    2. Как и в произвольном случае с современными системами (для бизнеса) - данные попадают в нее как из других систем (например, база клиентов розничного магазина может попасть в CRM систему из системы, управляющей розничными продажами), так и вручную (Вы решили стартовать новую попытку продажи своего продукта/услуги новому или существующему клиенту).
    3. Насколько мне известно - нет. Бухгалтерия - это стезя ERP. В CRM отражается процесс продажи как что-то верхнеуровневое, не знаю, как тут лучше сказать. Сами же "детали" в виде проводок денег, взаиморасчетов и т.п. - это все происходит в бухгалтерской системе, там, где финансы собственно "автоматизированы".
    4. Да, но сейчас эта грань размыта. Наверняка не ошибусь, если предположу, что у всех современных (CRM) систем для бизнеса поставляется как свой независимый клиент, так и веб-интерфейс.
    Ответ написан
    Комментировать
  • Как правильно использовать $bd в ООП?

    Acuna
    @Acuna
    Заполнил свой профиль
    Все просто. Вы немного запутались в областях видимости)

    class MyClass {
      
      private $f3, $db;
      
      function __construct () {
        global $f3, $db;
       
        $this->f3 = $f3;
        $this->db = $db;
        
      }
      
      function MyFunc () {
        $this->f3->somebody ();
      }
      
    }
    
    $obj = new MyClass ();
    Ответ написан
    Комментировать
  • Как реализовать доступ к API из приложения c# .Net?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    в чем проблема использовать шифрование? Смотрите в сторона ассиметричных алгоритмов, там шифрование идет одним ключем (который зашит в приложение) а дешифрация идет другим, который известен только веб сервису, даже если ктото сможет перехватить данные он с ними ничего с делать не сможет без ключа, которого нет в приложении и декомпиляция ничем не поможет.
    Ответ написан
  • Как реализовать доступ к API из приложения c# .Net?

    @Beltoev
    Живу в своё удовольствие
    Шифровать однозначно. Статья по теме: habrahabr.ru/post/144282

    Для защиты алгоритма шифрования (хотя, даже если злоумышленник будет знать алгоритм шифрования, это ему мало что даст без закрытого ключа) можно библиотеку с алгоритмом реализовать на компилируемом в бинарный код языке (тот же С++). Но это в том случае, если не найдете готовых решений (коих много в сети).
    Ответ написан
    Комментировать
  • Как отобразить несколько полей string и массив из string в виде колонок DataGrid?

    Nipheris
    @Nipheris Куратор тега C#
    Для стандартных полей сделай стандартные колонки в разметке, в связанной viewmodel-ке сделай свойства, соотв. стандартным полям, сделай для них обыкновенные биндинги.
    Для полей, которые могут удаляться/добавляться - генерируй колонки уже после прихода данных и добавляй в датагрид. Во вьюмодели сделай свойство UserProperties типа IDictionary, и заполняй словарь значениями нестандартных полей. При создании "динамических" колонок назначай им привязки вида UserProperties[propertyName], чтобы датагрид лез в этот словарь у каждого элемента и брал оттуда "пользовательские" свойства.
    Это идея, если нужно подробнее - непонятные места в комментарии. Случай действительно не редкий, сам недавно писал весьма похожую вещь - данные в монге (из-за отстуствия какой-либо схемы, "пользовательские" свойства), присылаются в JSON-е, нужно было показать в зависимости от того, что пришло.
    Ответ написан
    6 комментариев
  • Нарушу ли я авторские права данным логотипом?

    @Zewkin
    Я у мамы фронтэндер
    Я думаю, адвокаты Walt Disney могут доказать факт нарушения авторских прав даже если вы свою жену в постели Чубаккой назовете.
    Ответ написан
    Комментировать
  • Что изучать специалисту по информационной безопасности?

    @rgamretsky
    SharePoint Develorep(а хочется в ASP.NET MVC dev)
    Тебе уже встречались профильные предметы, на следующем курсе их будет больше. Если среди них попадаются те что тебе интересны, то делай упор на них, ищи в интернете более детальную информацию. В рамках того что читают в универе, дадут только названия и направление куда стоит смотреть. Этих направлений очень много, а информационная безопастность очень широкое понятие. Надо выбрать все же узкую специализацию в которой интересно рости.

    По поводу литературы, то можно поговорить с преподавателем который читает интересующий предмет, уверен что у него есть, да и подсказать сможет.

    Для себя выделил два направления: криптология и построение комплексных систем защиты информации(КСЗИ). Хотя в будущем не планирую с этим связать свою жизнь :)
    P.S. закончил 3-тий курс "Безопасность информационно-коммуникационных систем"
    Ответ написан
    Комментировать
  • Что изучать специалисту по информационной безопасности?

    insiki
    @insiki
    broken pipe
    Наверное и варианты действий с "той стороны"? :)

    1. Основные понятия информационной безопасности. Примеры
    • Понятие информационных систем и их безопасности.
    • Критерии оценки рисков безопасности
    • Корпоративные политики безопасности
    • Исторические примеры. Червь Морриса.
    • Юридические аспекты

    2. Предварительная подготовка. Как они это делают?
    • Предварительная подготовка. Сбор информации
    • Разведка
    • Внедрение
    • Закрепление в системе

    3. Публичная и приватная информация. Сбор информации
    • Публичность информации
    • Разграничение прав доступа
    • Пароли, пароли, пароли
    • Шифрование
    • Безопасная передача информации

    4. Проводные и беспроводные сети. Возможности современных инструментов
    • Возможности внедрения
    • Аутентификация на уровне устройств
    • Анализ локальной сети при подготовке к атаке или защите
    • Сетевые атаки. DoS, DDoS

    5. IT-Безопасность операционных систем
    • Вирусы и трояны
    • Сетевые черви.
    • Аутентификация и обход ограничений
    • Технические методы взлома паролей. Брут-форс, перебор по словарю, радужные таблицы.
    • Распределение прав
    • Фаерволы

    6.​ Социальный инжениринг
    • Понятие социального инжениринга. Методы воздействия.
    • Психология и сценарии поведения.
    • Списки контактов и социальные сети.

    7. Уязвимости и их эксплуатация
    • Понятие уязвимости и эксплоита
    • Возможности эксплуатации уязвимостей

    8. Криптография
    • Использование алгоритмов криптографии
    • Сильные и слабые стороны алгоритмов криптографии
    • Соль и перец.
    • Ассиметричное шифрование

    9. Ботнеты
    • Примеры использования ботнетов
    • Принципы работы

    10.​ Обратный инжиниринг (реверс-инжиниринг)
    • Цели реверс-инжиниринга
    • Инструменты, используемые при обратном инжиниринге

    11.​ Инструментарий специалиста
    • Программы для смартфонов
    • Программы для Linux
    • Программы для Windows
    • Аппаратные средства. USB Rubber Ducky, WiFi Pinapple
    • Специализированные операционные системы. Kali Linux

    12. Проблемы безопасности, связанные с использованием веб-ресурсов
    • Неправильная настройка сервера
    • Использование рекламных сетей
    • Нарушения безопасности при хранении резервных копий веб-ресурсов
    • Фишинг
    • Cross-site scripting (XSS)
    • Внедрение SQL (SQL injection)

    13. Сценарии действия для проникновения в сеть
    • Проникновение через зараженный сайт
    • Проникновение через зараженную программу
    • Проникновение через "потерянный носитель"
    • Проникновение через уязвимости сервисов
    • Проникновение с получением физического доступа
    • Проникновение через социальный инжениринг
    • Проникновение через подставного сотрудника
    • Проникновение через кражу оборудования
    • Прикрытие при проникновении
    • Сокрытие следов после взлома

    14.​ Действия после проникновения
    • Повышение привелегий
    • Выделение полезного трафика
    • Подбор и перехват паролей
    • Маскировка программ и трафика
    • Пропуск трафика для других мероприятий

    15. Анализ по итогам атаки или проникновения
    • Анализ жестких дисков
    • Анализ трафика сети
    • Анализ прав доступа
    • Анализ логов
    • Привлечение правоохранительных органов

    16.​ Защита и профилактика
    • Системы диагностики вторжения (IDS)
    • Фаервол
    • Песочница
    • Централизованное логгирование
    • Баланс безопасности и удобства
    • Тренинги для персонала
    • Создание политик корпоративной безопасности и их внедрение
    • Создание отдела информационной безопасности
    Ответ написан
    1 комментарий
  • Что изучать специалисту по информационной безопасности?

    я ни разу не специалист по информационной безопасности, но имхо можно делать упор на одно из трёх:
    1. Системное администрирование с уклоном в безопасность. От этого я вообще далёк, так что ничего не могу сказать.
    2. Поиск уязвимостей в ПО. Учить C/C++ для понимания, какие дыры можно оставить при написании ПО, а дальше язык ассемблера для реверс инжиниринга программ. Ну и там, не знаю, поищите в интернете исходники вирусов, поразбирайтесь.
    3. Поиск уязвимостей в веб-сервисах. Учить какой-нибудь серверный язык (PHP, Python, Ruby и проч.) + JavaScript + SQL + на базовом уровне HTML. Гуглить XSS, SQL injection, DDoS. Если интересен этот вариант, могу пару ссылок подбросить по основам.
    Ответ написан
    Комментировать
  • Что изучать специалисту по информационной безопасности?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Поищите книгу "Инфраструктуры открытых ключей" (О.Ю. Полянская, М. ИНТУИТ, 2007 г.)
    Или пройдите одноимённый бесплатный курс www.intuit.ru/studies/courses/110/110/info
    Ответ написан
    Комментировать
  • Цена адаптивной верстки?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    - Сколько будет продолжаться эксплуатация и рабство?

    Находим заказ на 5000р.
    Идем на fl.ru
    Находим исполнителя за 500р.
    Зачем быть рабом, когда можно рабовладельцем?
    Ответ написан
    3 комментария
  • В какой БД хранить логи посещений?

    Можно воспользоваться связкой Logstash + ElasticSearch + Kibana.
    Logstash - принимает и парсит логи.
    ElasticSearch - хранилище.
    Kibana - визуализация данных.

    https://www.elastic.co

    ps. имею опыт работы с такой связкой. Сейчас в хранилище порядка 1,5 миллиардов событий на 4 серверах. Работает без проблем.
    Ответ написан
    3 комментария
  • Как использовать Twig в MVC, в моделе?

    Модель, если простыми словами, это класс, описывающий структуру конкретной таблицы + гетеры и сеттеры. Отдавать страничку будет у вас контроллер. Я в своем проекте делаю так:
    Класс, отвечающий за работу твига:
    <?php
    namespace View;
    
    use Controller\Error;
    use Twig_Environment;
    use Twig_Loader_Filesystem;
    
    class TwigView implements IView
    {
        /**
         * @var Twig_Environment
         */
        private $twig;
        /**
         * @var Twig_Loader_Filesystem
         */
        private $loader;
        /**
         * @var string
         */
        private $template;
        /**
         * @var array
         */
        private $params;
    
        /**
         * @param string $template Имя шаблона
         * @param array $params Передаваемые параметры
         */
        public function __construct($template, $params)
        {
            $this->loader = new Twig_Loader_Filesystem(TEMPLATE_DIR);
            $this->twig = new Twig_Environment($this->loader);
            $this->template = $template;
            $this->params = $params;
        }
    
        /**
         * @return string
         */
        public function render()
        {
            try {
                return $this->twig->render($this->template, $this->params);
            } catch (\Twig_Error_Loader $e) {
                $error = new Error();
                $error->index404();
            }
        }
    }

    В контроллере (метод вывода всех пользователей системы):
    public function index()
        {
            $this->isAuthorized('users');
            try {
                $twig = new TwigView('Users/ShowAllUsers.twig',
                    [
                        'session' => $_SESSION,
                        'user' => $this->em->getRepository('Model\User')->getAll()
                    ]
                );
                print $twig->render();
            } catch (DatabaseException $e) {
                $error = new Error();
                $error->index1010($e->getMessage());
            }
        }
    Ответ написан
    Комментировать