Защита данных ликбез.




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

53 Comments

  1. artbear

    Я правильно понял, что статья еще не закончена? 🙂

    Reply
  2. awk

    Да… Ставлю это всё гораздо быстрее чем описываю…

    Reply
  3. antb

    Размер видео файла = 0. Скачать невозможно

    Reply
  4. awk

    Исправил вроде…

    Reply
  5. Alav

    Зачем «По требованиям безопасности исходный код должен быть открыт. » -если 90 % пользователей все равно глядеть на него не будет. А если и посмотрят, то все равно не поймут. Тогда уж надо с Windows на Linux, т.е. на открытое программное обеспечение переходить. Не говоря уже о том, что 1С и безопасность мало совместимые вещи.

    Reply
  6. afanasko

    (5)

    Не говоря уже о том, что 1С и безопасность мало совместимые вещи.

    Это почему же? 😀

    Автору: Респект за статью! Но слова «фаерфол» и «фаервол» режут глаз.

    Reply
  7. marsohod

    Немного сумбурно…

    Так, давайте по порядку…

    1. Мне кажется, что правильнее было бы назвать статью «Первые шаги по установке FreeBSD для 1С-ников» 😀

    2. Статья в процессе написания. Рановато выложили в общий каталог.

    3. Забыли упомянуть Agnitum Outpost Firewall — на мой взгляд один из лучших файрволов для Windows-систем.

    4. Хотелка: раз уж речь зашла о безопасности, то очень кстати было бы объяснить «на пальцах» почему в Linux-системах нет антивирусов, почему у них врожденный иммунитет к «заразе». 🙂

    Reply
  8. awk

    (5) — безопасность должна быть доказуема. Я конечно понимаю, что есть люди, для которых и бинарник является исходником, но их мало. Кстати закрытость кода не сильно затрудняет поиск дыр, а вот выявлению и исправлению ошибок препятствует. Стабильность, надежность и безопасность Linux — сильно зависит от сборки(я писал это не цельная система и вариантов слишком много). FreeBSD — это законченный продукт с открытым исходным кодом. Если честно, то и Windows вполне надёжная система, при условии грамотного администрирования.

    (6) Огромное спасибо… Меняю на брандмауэр…

    Reply
  9. ValeriTim

    Если честно, все это конечно хорошо, но для одинесника, по моему, сложновато. Если уж вы захотели описать простую, быструю и, что самое главное, не сложную установку BSD/Linux сервера, то надо было бы выбрать другой дистрибутив.

    Сам использую Ubuntu. Ставится за 10 минут, никаких лишних программ, никакого графического интерфейса.

    Но, если честно, пока не пойму какое отношение все это имеет к 1С …

    Reply
  10. awk

    (7)

    Миф №1 под UNIX нет вирусов и антивирусов.

    Миф №2 у UNIX встроенный иммунитет к вирусам.

    Субъективно: В моем понятии слово windows и безопасность лежат в разных плоскостях. Поэтому, я не верю, что на «дырявой» системе можно построить безопасность.

    Про 1С. БЕЗОПАСНОСТЬ = СТОИМОСТЬ / УДОБСТВО.

    Reply
  11. awk

    (9) — Почему Ububntu? Может Fedora? Или Debian? OpenSuSe? Может… Вариантов много… И у всех свои нюансы…

    Reply
  12. ValeriTim

    (11) я не агитирую к какому то дистрибутиву, а всего лишь написал что использую сам.

    И я бы еще не стал отбрасывать керио — да он не бесплатен, но он того стоит ! И уж в нем описать правила маршрутизации будет куда проще, чем в том же IPFW. Думаю, что стоит сразу предупредить читателя, что только для описания принципа работы брандмауэра придется написать как минимум 4 такие статьи. И после прочтения оных вопросов появится на порядок больше, чем было до того. 😀

    Reply
  13. awk

    (12)

    Субъективно: В моем понятии слово windows и безопасность лежат в разных плоскостях. Поэтому, я не верю, что на «дырявой» системе можно построить безопасность.


    По требованиям безопасности исходный код должен быть открыт. То есть данные системы не могут быть сертифицированы выше класса С5 американского или пятого класса нашего стандарта безопасности.
    Reply
  14. marsohod

    (13) Так бы сразу и говорили… 😀

    А каким классам безопасности соответствует FreeBSD? И альтернативные варианты?

    Reply
  15. pm74

    интресный ликбез

    смысл последнего параграфа не совсем понятен

    Reply
  16. Alav

    Ну по требованиям безопасности компьютер должен находится в бетонно-свинцовом бункере и не должен быть подключен ни к ЛВС ни тем более к Интернету.

    Reply
  17. ValeriTim

    (13) Ну, в таком случае, посмотрите сколько заплаток безопасности выходит к той же фрюхе и попробуйте вспомнить из анекдота почему неуловимый Джо такой неуловимый. Мы все очень хорошо умеем рассуждать о «дырявости» виндов, но почему то вспоминать о «дырявости» BSD/Linux систем не хотим и считаем их чуть ли не эталоном безопасности. 😀

    Я сильно сомневаюсь что большая часть контор будет сертифицировать свои маршрутизаторы …

    Reply
  18. awk

    (16) Критерии я указал в статье… Дернул из оранжевой книги…

    (17) Сколько? Заплатка… При монтировании флешки пользователь может получить привилегии суперпользователя если встанет на левую ногу коснется правой рукой левого уха и т.д… Угу.. Есть такое… Только по умолчанию монтировать что-либо может только суперпользователь, 2 — у меня на серверах обычно стек USB отключён. Не нравится FreeBSD — OpenBSD найдено 2 уязвимости за 15 лет. Опечатка в документации — критическая ошибка, повод не допускать код до релиза…

    Reply
  19. GSoft

    а я бы кстати послушал и про линукс на клиентских машинах

    Reply
  20. awk

    (19) Какова задача? То есть какие приложения должны на нём работать?

    Reply
  21. GSoft

    стандартный офисный набор + 1С

    Reply
  22. GSoft

    стандартный офисный набор + 1С, 7-локально, 8-ка в терминале

    Reply
  23. antb

    Стандартный офисный набор в виде OpenOffece присутствует в практически в любом десктопном дистрибутиве Linux`a.

    Reply
  24. iov

    аппаратные фаерволы не раскрыты.

    🙂

    почему BSD/Linux — надежность.

    почему не BSD/Linux — больше вопросов чем ответов.

    и так до бесконечности.

    И самый вопрос — при чем тут 1С?

    7.7 — дыра на дыре.

    8.0 8.1 защита уже начала поддаваться не только гуру.

    да и прой цель не взлом и получение пароля а именно кража информации..

    причем не всегда все и сразу.. 😉

    И не многие компании готовы тратить 40% на опеспечение защиты информации.

    Reply
  25. awk

    (24) Украсть информацию через сеть сложнее, чем через пользователей. А вот завалить — пожалуйста… Те кто не готов платить, не теряет столько денег на сетевых атаках или финансовые потери для них приемлемы.

    Из аппаратных знаю CISCO, D-Link, 3-Com. Первая падала у провайдера раз в неделю — что не добавило ей рейтинг (субъективно). Две оставшиеся, да и не только они — это Linux ядро 2.6 с iptables. Правда на семинаре Microsoft рассказывал про аппаратные железки с ISA, но озвученная стоимость… Короче ISA при этом стоил в 10 раз меньше…

    (22) Запустить windows приложение на linux клиенте можно тремя способами:

    1. Wine — работает не все… А если работает, то не всегда стабильно.

    2. Виртуальная машина — требует боле-менее нормального железа.

    3. Клиент к терминальному серверу. Пока нет поддержки 6 версии rdp протокола. Citrix.

    Reply
  26. vet7777

    Comodo Firewall — бесплатный, работает под windows XP, Vista, и Windows 7, по рейтингам в тройке лидеров…. 😉

    Reply
  27. Wolf_DA

    (25) Полностью с Вами согласен по поводу безопасности, открытости кода и то что windows не место в этой нише. Стоимость шлюза+файл-сервера+прокси+ftp+т.д. на FreeBSD/OpenBSD в разы (много раз) меньше стоимости решений на windows.

    (24) При чем 1С? Сейчас практически у всех доступ в сети по широкому каналу в инет и кража данных 1С это лишь частный случай.

    Reply
  28. fastwriter

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

    Reply
  29. awk

    (28) Как только цена копии мелкомягких превысит 60 рублей (пиратка)… IT-шников сильно поубавится…

    Reply
  30. vlas

    интересно почитать с таким вот прочтением, спасибо

    Reply
  31. JIGIT

    спасибо за труд и + однозначно

    Reply
  32. JIGIT

    …скачал

    Reply
  33. kirillkr

    Работаю уже давно с Linux’ом и 1С. То что здесь написано — большой труд, но бесполезный. Абсолютно…

    По новому российскому законодательству в сертифицированных конторах запрещено использовать 1С 8.x в качестве программы по учету ЗП, т.к. она не сертифицирована. И какие бы вы ухищрения не ставили в проверке это не поможет.

    По каналам: здесь тоже дела обстоят туго. На сколько я знаю (могу сильно ошибаться) еще ни одна версий Linux не сертифицирована как связующее звено по шифрованию канала между офисами (ОСОБЕННО ЭТО КАСАЕТСЯ ДЛЯ ОФИСОВ РАЗДЕЛЕННЫХ ГРАНИЦАМИ — те, у которых канал проходит через госграницу). Проблемы также есть с сертификатами у HP. Лучше обстоят дела с Cisco, но какую категорию защиты они обеспечивают — только узнаю.

    Главное что здесь полезно описано — это категории защиты, в которых указывается, что любая деталь по доступу к этой информации ДОЛЖНА БЫТЬ ДОКУМЕНТИРОВАНА. Т.е. пользователь именно такой, какой указан. Имеет доступ к тому-то тому и только с этого рабочего места, только выполнив соответствующие шаги и по другому никак.. И т.д.

    (0) я прошу прощения за столь резкий отзыв, но именно с этим сейчас приходится разбираться и столько подводных камней, которые куда более критичны, чем выбор дистрибутива, автоматического разбиение диска и т.п. Поэтому статью лучше назвать по-другому: установка 1С на Linux’е или еще как-нибудь, но только не Защита данных.

    Reply
  34. hren

    Херня и лажа

    Reply
  35. awk

    (34) Минусуй тогда. Но можно прокомментировать почему?

    (35)

    1. 80% контор плевать на сертификацию.

    2. Причем здесь ЗУП или ЗИК?

    3. Сертифицирована — то ли ALT, то ли ASP, то ли ещё кто — врать не хочу.

    4. Причем здесь каналы? Я про VPN еще да же не упоминал.

    5. Категории защиты — это обобщение оранжевой книги. Автор её не я.

    6. Там написано в заголовке еще ликбез? Не относитесь к статье как к чему то большему, чем оно есть.

    Спасибо за интересный комментарий…

    Reply
  36. awk

    (35) Уточняю по поводу первого пункта:

    Давайте разделим понятие деюро и дефакто. Деюро 98% систем на рынке продуктов IT не имеют право на «жизнь» из-за отсутствия тех или иных документов. Однако, 70% дефакто попадают под те или иные требования. Да же всеми горячо любимая операционная система Microsoft попадает под класс С2, а до B1 не дотягивает парой-тройкой пунктов. Так же известная вам FreeBSD или OpenBSD никогда не станут UNIX. Просто в силу того, что UNIX — это зарегистрированная торговая марка. Принадлежит эта марка Novell и сертификация на соответствие стоит БОЛЬШИХ денег. Как специалисту по информационной безопасности, проводящему аудит фирмы, мне плевать чем вы защищены, мне важно выявить узкие места и дать рекомендации по их исправлению. Как хакеру, мне тем более безразлично наличие у системы бумажек. Конечно юридическая безопасность — это не маловажный факт, но пока вы малое или среднее предприятие риск связанный с попаданием на этом менее одного процента. В силу отсутствия ресурсов контролирующих органов. Плюс откаты не столь велики.

    Reply
  37. legion1C

    А кто нибудь сталкивался с 8.2? По правде сказать, я работал только на 77. Сейчас пытаемся перейти на 8.2. Задача состоит в подключении через инет большого количества пользователей. Какие могут быть угрозы безопасности?

    Reply
  38. awk

    (37)

    Примечание 1: 1С использует только одного пользователя, поэтому если вы даете доступ напрямую к 1С, то теоретически можно разрушить базу или внести в неё любую другую информацию. Как вариант это атаки типа «инъекция» или «переполнение буфера». Так же вы можете получить успешную атаку на отказ в обслуживании как связанную с особенностью защиты 1С с помощью аппаратных ключей, так и с другими особенностями реализаций сервера 1С.

    Я бы рекомендовал SSL и сертификаты для пользователей. VPN не ах-как удобно. Пиши в личку отвечу более подробно…

    Reply
  39. g120776

    Статья хорошая, и очень толковые ответы на комментарии.

    Сам, когда работал админом, ставил FreeBSD, правда использовал IPFW.

    Вопрос:

    Есть ли существенные различия в системах PF и IPFW?

    Спасибо за статью, и заранее благодарю за ответ.

    Reply
  40. awk

    Различия есть, вот только не смогу рассказать какие. Давно им не пользовался… Как минимум это синтаксис. Плюс, в ipfw выигрывает первое правило, а в pf последние. В ipfw можно указать маску пакета для фильтрации, а в pf для этого надо задействовать стороннюю программу. А вообще вот тут: http://vkontakte.ru/topic-265_21379072 обсуждение было.

    Reply
  41. Boris-Leleko

    Пока не проверяется трафик на уровне приложения, нельзя говорить о полноценной безопасности. То что здесь описано, это просто фильтрация пакетов, а внутрь пакетов никто не заглядывает. Дорогие брадмауеры типа ISA сервера именно это и делают. И деньги платятся за этот функционал. Кто-нибудь знает бесплатный брандмауер, который анализирует содержимое пакетов?

    Reply
  42. awk

    (41) perl + tcpdump. 🙂 В статье части про проксирование не хватает…

    Reply
  43. lstep

    Актуально.

    Reply
  44. hackerk700

    А про проксирование ничего не будет?

    Reply
  45. stark.temp

    Спасибо автору за статью, будем ждать продолжения данной темы.

    Reply
  46. genadyichnew

    Спасибо. Меняю брандмауэр

    Reply
  47. BAPPKAH

    Статья хорошая, и очень толковые ответы на комментарии.

    Спасибо за статью, и заранее благодарю за ответ.

    Reply
  48. Hamlet

    Спасибо автору за статью, понравилось систематизирование элементарных вещей, разбросанных в инете по комментам, в одну статью-мануал с толковыми разъяснениями.

    Надеюсь, автор закончит свой труд.

    Reply
  49. Crazy1CC

    Статья интересная, комментарии не менее интересны

    Reply
  50. juker

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

    Reply
  51. electronik

    Автору респект за труд молодец собрал кучу информации виложеной на сотне сайтов. Но на мой взгляд по даной теме можно писать и писать и создавать целые книги и сайты. Тема настольно обширна что имеет множество нюансов и особеностей.

    Reply
  52. Созинов

    (25)

    Из аппаратных знаю CISCO, D-Link, 3-Com. Первая падала у провайдера раз в неделю — что не добавило ей рейтинг (субъективно). Две оставшиеся, да и не только они — это Linux ядро 2.6 с iptables. Правда на семинаре Microsoft рассказывал про аппаратные железки с ISA, но озвученная стоимость… Короче ISA при этом стоил в 10 раз меньше…

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

    Reply
  53. juker

    Rjvfy(52) EfiopReal, Как вам команда включения интерфейса циски — no shutdown (дословный перевод на русский — включить)! 🙂

    Ну и нормальный антоним включения — shutdown (выключить). 🙂

    … Чисто субъективно — циска не падает, если её не ронять.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *