<?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='\
Не стоит забывать еще и решения на основе SQL
http://ivn73.tripod.com/new_1s.htm
Так же есть «радикальное» решение на основе тонких клиентов и отдельной подсети (там украсть что-то просто неоткуда, только если распечатать или сфот-ть с монитора, правда узким местом будет админ и прог, но они всегда явл. узким местом)
Еще можно пригласить грамотного админа, настроить групповые политики и логирование + длл от ромикса на запрет открытия внешних ерт (хотя дырки все равно остануться)
1) Спасибо за ссылку. Очень интересный материал.
> на запрет открытия внешних ерт
ставим формекс и перехват открытия внешних отчетов.
CTRL+O
support, ты это про что? Думаешь так можно перехитрить ФормЭкс?
Чебурашка правильно сказал: «Ставим и радуемся». Тем более, что в данном случае нужна всего лишь одна глобальная предопределённая процедура:
СИНТАКСИС:
Процедура ПриЗагрузкеВнешнегоОтчета(<ИмяФайлаОтчета>)КонецПроцедуры
ЗАМЕЧАНИЕ:
Если в процедуре установить статус возврата в ноль, то внешний отчет не будет загружен.
Мне почему-то кажется, что народ путает собственно информационной системы (конфигурации) и ее наполнение (базы данных).
Это ж два практически не связанных случая. И комплексная защиты в форме должна покрывать их оба. Но средства для защиты от каждого случая будут свои.
И надо помнить, что не существует инструмента или метода, использование которого решит все проблемы с защитой одним махом. Нужно использовать многоуровневую защиту и не пренебрегать административными методами.
Никто ничего не путает 😉
Просто в контексте статьи идет разговор о воровстве мд-ка возможно с данными
Я и расписал какие есть способы предотвратить подобное.
КЗК же защищает конфигурацию от воровства при распространении ее клиентам.
Т.е. сама статья описывает немного не то, что защищает КЗК 😉
1 уровень это хорошо настроенное логирование с оповещением
Если начинают воровать к ним уже идет отдел безопасности
Например простейшее решение. В словаре меняем пути на другой каталог. В текущий каталог кидаем дбф-ки из демобазы. Настраиваем логирование действий с подставными файлами. Правда инсайдер может просмотреть словарь, но админ может много чего сделать чтоб инсайдер этого не смог.
2(7) Вот именно что путаешь. Где в статье речь про данные? Речь там про «информационную систему», и данные тут не упоминаются вообще. Зато постоянно говорится о конфигурации. Или мы разные статьи читаем? 🙂
КЗК же защищает конфигурацию не только от клиентов. У меня больше половины клиентов — это фирмы, которые вложились в разработку конфигурации и не желают отдавать эти наработки конкурентам. Кстати, это меня самого удивило. Но, мои слова по этому поводу в статье уже процитированы 🙂
2(8) Еще раз: в данном контексте «информационная система» — это не столько данные, сколько бизнес-процессы, которые в конфигурации реализованы (пусть Доржи поправит меня, если я неверно трактую вкладываемый им смысл статьи). И полностью полагаться на один метод защиты, как я уже говорил, в корне неправильно. Должен быть комплексный подход.
Надоели уже со своим КЗК, чесслово… Семерка потихоньку отмирает и с этим ничего не поделаешь… А в восьмерке, в БОЛЬШИНСТВЕ случаев, встроенной защиты хватает…
2(10) Ну, «отмирать» семерка будет еще ооочень долго. Или ты считаешь, что все, кто вложил несколько сотен тысяч баксов в автоматизацию на семерке с радостью кинутся вкладывать новые сотни в переход на восьмерку? Если так, то значит ты очень недолго еще работаешь в этой сфере 🙂
(10) В гробу я видал эту восьмерку, которая умудрилась лечь от их же стандартной ОСВ по счету.
Причем ложилась и 8.0, и 8.1. Пусть дозреет сперва
(11,12) Обычный подход семерочников 🙂
2(13) Ну, у тебя-то не менее обычный подход «восмерочников». Я тебе могу процитировать одно интересное высказывание:
«Полезная вещь думаю. Но как библиотека для 7.7. для нас уже устарела. Альф, если серьезно работаете с ней, продумайте вариант на 8-ку»
Это 2003-й год. Реакция на выход первой версии КЗК. И знаешь, с тех пор ни чего не изменилось. Семерку все так же хоронят, но она продолжает успешно продаваться и внедряться. Под нее все так же пишут новые проекты. И КЗК с тех пор так же пользуется неплохим спросом.
Так что может не стоит все же уверять всех в том, что «семерка потихоньку отмирает», а имеет смысл взглянуть реальности в глаза? 🙂
Конечно, прогресс не остановить и семерка в тоге уйдет с рынка. Но будет это совсем не так скоро, как хотелось бы некоторым. И только из-за того, что 1С увериться в полной готовности восьмерки и захочет убрать внутреннюю конкуренцию продуктов. Т.е. уберет семерку директивно, а не по воле рынка.
ИМХО, конечно.
(14)
> И только из-за того, что 1С увериться в полной готовности восьмерки и захочет убрать
> внутреннюю конкуренцию продуктов. Т.е. уберет семерку директивно, а не по воле рынка.
В одинесе уж серьезно считают, что семерка тормозит рост темпов продаж восьмерки. ИМХО полным ходом разрабатываются меры по формированию «правильной» воли рынка… 😉
2(15) Если уж им это с шестеркой не удалось, то с семеркой не получится тем более.
(16)
Что с шестеркой не удалось? Мне казалось, что все удалось…
2(17) В курсе сколько шестерку вытесняли с рынка? А то, что до сих пор ее некоторые используют и отчетность для нее делается? Семерку еще сложней будет вытеснить. Практически нереально.
В статье было правильно сказано «для малого и среднего бизнеса», к сожалению для больших компаний 1С не подходит не по скорости, не по защите.
2(19) Всего лишь вопрос маркетинга. Были бы усилия направлены в этом направлении от самой 1С, сразу стало бы подходить и по скорости, и по защите 🙂
(18)
То, что под шестерку делают отчетность — это понятно. Шестерка — культовая программа. Говорим «1С», подразумеваем «1С:Бухгалтерия 6.0».
Это имиджевая версия и отказ от ее поддержки не влучшую сторону сказался бы на репутации фирмы.
Вытесняли ли шестерку с рынка? Непомню каких либо активных действий… Единственное, что было — это выпуск специальной конфигурации, такой же простой как и шестерка.
Версию 7.5 — точно вытесняли. Объявили цену перехода на 7.7 в $40 в течении ограниченного времени. Кто не успел тот опоздал.
Будут ли семерку поддерживать как шестерку или заманят пользователей на 8.0 большой скидкой? Незнаю… Поживем, увидим.
Переход пользователей на очередную версию — процесс небыстрый. Кстати, сегодня видела компанию, которая работает еще на первой редакции ТиС.
2(21) Шестерка — имиджевая и культовая?! Это даже не смешно. А с рынка ее очень даже усиленно вытесняли.
(13) Ты стрелы попутал, я не семерочник, а ПРОГРАММИСТ
В новой версии платформы «1С:Предприятие 8.0/8.1» описанная уязвимость системы устранена, за счет встроенного механизма сборки конфигурации без исходных кодов.
Ну-ну, есть такое, вот только уже месяцев 6-7 в свободном доступе есть декомпилятор исходных кодов. Так что спрятать штаными средствами 8.0/8.1 исходные коды все равно не получится.
Поучительно для не просвященных.
81 серверный вариант — утянуть сможет только чел с полными правами 1с или админ сервера (пасворт на скуль БД не вопрос), а вот простой сотрудник уже вряд-ли.