Собеседование на знание языка C – 12 вопросов и ответов

В этой статье мы рассмотрим интересные задачи на языке C, которые могут помочь студентам (и не только) освежить в памяти свои знания этого языка и подготовиться к заковыристым вопросам на собеседовании.

1. Функция gets()

Вопрос: В приведенной программе есть проблема. Можете её найти?

#include <stdio.h>

int main(void)
{
    char buff[10];
    memset(buff,0,sizeof(buff));

    gets(buff);

    printf("\n The buffer entered is [%s]\n",buff);

    return 0;
}

Ответ: Скрытая проблема в этом коде – это использование функции gets(). Эта функция принимает строку со стандартного ввода без проверки размера буфера, в который будет помещена эта строка. Это запросто может привести к переполнению буфера. В данном случае лучше использовать другую стандартную функцию – fgets().
Continue reading Собеседование на знание языка C – 12 вопросов и ответов

Защита Asterisk при помощи Perl (без fail2ban)

Верблюды PerlДля защиты программных АТС Asterisk от злоумышленников, пытающихся подобрать пароли к SIP-аккаунтам, как правило, используют fail2ban с набором правил для Asterisk. Однако не всегда есть возможность установки этой программы. Например, на сервере не установлен интерпретатор языка Python, но в то же время есть Perl. Под катом – скрипт, позволяющий отфильтровывать IP-адреса злоумышленниов после 4 неверных попыток аутентификации. Написан на Perl, с минимумом зависимостей, заточен для файрволла pf. Отмечу только, что его нужно поместить в список задач cron, на ежеминутное выполнение.
Continue reading Защита Asterisk при помощи Perl (без fail2ban)