<?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='\
Видел в одной конфе, «жизнено важный код» переносят во внешние обработки, которые просто напросто засовывают в ВК.
Модуль любой открытой(созданной) обработки находится в $UserTempv8_*.tmp.
Так что все эти фантазии бред. Только ВК… другого выхода нет..
(2) допустим. Применительно к v8 убедил (почти).
Но ВК — это права админа для регистрации. Которых может и не быть..
(2) кстати, я говорил о защите от прямого вскрытия.
Более толковые аргументы есть?
С поправкой на саму статью (если её прочесть).
Хорошая статья, наглядно отражает ошибочное мнение про защиту, зачем минусовать? Можно в ответ написать подробное объяснение.
(5) так словами мнения-то говорить кто-нить будет? С аргументами.
Для простого отчета/обработки достаточно таких методов как:
1. обфускация исходного кода
2. обфускация байт-кода
3. шифрование кода
4. штатный пароль/поставка без исходного кода
Этого более чем достаточно, что бы «ломать» отчет стало НЕ ВЫГОДНО.
Если же вы продаете большие (дорогие) решения, то имеют смысл и затраты на защиту нормальную (вынос в длл-ки, ключи, от Интелис тут решение мелькало и т.д.)
ЗЫ: А вообще ПРЕДОПЛАТА рулит! 🙂
(2) Зачем минусовать? Мне лично, интересно было почитать мнение автора, хоть и несколько наивное 🙂
(7) это — бесспорные утверждения. Которые, кстати, я в статье не отбрасывал. Обфускацию, правда, не упомянул. Предоплату — не обсуждал в силу предмета статьи.
И про большие решения речь не шла.
Повторюсь — речь шла о дополнительном «туннеле». И о том, что можно обработку изначально давать урезанную. Т.е. клиент, отказываясь от оплаты, узнаёт об истечении срока пост-фактум. И при выцеплении кода из кэша получает уже урезанную версию.
(8) говорю-же: ночные бдения :).. А опята киданий (и попыток киданий) у меня хватает..
(3) если обработку взять из Temp её еще и проще декомпилировать .. так как она уже распакована..
Насчёт прав админа, это единственная сложность в ВК.
Мне эти «рассуждения» не понравились, потому как нечего информативного не несут .. просто запутаете многих людей, которые пытаются сделать первые шаги в этом. Люди потратят время на заранее обреченные вещи..
Усё хорошо. Если видишь,что клиент — гомик, и денег у него повсей видимости нет,тогда незачем с ним связываться.
А если связался,то не ограничивайся защитой только данного отчета или конфигурации.Твой ответ должен быть ,как ответ России Грузии:
Нанести максимальный ущерб !!! Удалить не только свой отчет ,но и большую(доступную) часть программ на Сервере и в Локалке.
(12)
«Если видишь,что клиент — гомик,и денег у него повсей видимости нет»
Ты ясновидец? К тому же иногда не платят те у кого эти самые деньги есть, просто жаба душит.
>Нанести максимальный ущерб !!! Удалить не только свой отчет ,но и большую(доступную) часть программ на Сервере и в Локалке.
А это уже вредительство, и под уголовное законодательство попадает кажется.
(11) «потратят время» на что?
И чего информативного ты хотел?
Я порассуждал вслух, предложил вариант. А ты цедишь сквозь зубы обрывками комментарии (кстати, толковые комментарии), перекладывая их кучами пустых слов.
Коль скоро ты решил отреагировать — так реагируй адекватно, по делу.
И потом — «первые шаги» — это что такое? У меня в своё время всё выливалось в очередную закупку КЗК (в чём не вижу ничего плохого, кстати). И почему не рассмотреть все возможные пути действий, их плюсы и минусы?
(12) будем считать это шуткой..
(14) Сделай сам.
Вот уважаемый вам рецепт для защиты конфы в серверном варианте.
Берете снифер врубаете его по порту сервера. (1542).
И смотрите какие данные там идут… при открытии документа. :000
Кодируем ключом (2048) записи(модуля) в таблице Config, cоответственно в конфигураторе уже ее не откроешь.
http://www.winpcap.org/default.htm . которому и передаем ключ. Распакованные модуль передается непосредственно клиенту. Клиент получает уже привычный для него набор данных. И кеширует его в $UserTemp наше дело это оперативно убрать. …..
Сервер будут отдавать эти упакованные записи клиенту. Клиент при попытке их распаковать будет вываливаться с ошибкой «Ошибка формата потока». Поэтому пред клиентом ставим распаковщик на основе WinPcap
Сразу предупреждаю вопросы от том что …..» и для внешней обработки модуль из $UserTemp тоже можно убрать!!!» попробуйте не получится. И потом подумайте почему.
Описанная технология будет работать с такой же скоростью что и обычная .. модуль любого открытого объекта кешируется клиентом.
Удачи…
(15) а теперь — как это исполнить? Т.е. технически как это реализуемо? Допустим (частый случай), клиент использует комбинированный доступ: терминально и по сети. При этом у меня, как у стороннего разработчика, нет прав ни устанавливать ПО, ни перенастраивать действующее ПО.
Мои действия?
И, пожалуйста, не надо «выкать». У меня комплекс неполноценности от этого разыгрывается 😉
(16) да никак … ты 🙂 такое ощущение все пытаешься мне палки в колеса вставить.
(17) вовсе нет. Я и тему-то поднял ввиду ограниченности прав в большинстве случаев. Понятно, что проще всего — ВК пользовать. Дёшево и сердито. И статей полно по разработке.
А тут вся фишка — в «петлянии», в том, чтобы не имея доп. прав, проконтролировать использование своей разработки.
То, что идея не понравилась — я понял.
Теперь хочу конструктива.
Не к тому, что я — д’Артаньян, а остальные — козлы. Просто, может есть простые и очевидные способы, которых я не вижу.
(18) Все простые и очевидные способы я перечислил. Зачем ещё что-то изобретать? Какого конструктива ещё не хватает?… 🙂
(19) для особо одарённых — уточни:
1. обфускация исходного кода — это понятно
2. обфускация байт-кода — это что за зверь? В 1С язык интерпретируемый. Какой байт-код?
3. шифрование кода — какими средствами? Снова ВК?
4. штатный пароль/поставка без исходного кода — это опять понятно..
По п.3 — однозначно согласен. По п.1 — любой студент тупо вручную сможет справиться с восстановлением кода. Вопрос времени, а так — работа тупая. По п.4 уже говорил, что при мне такие вещи вскрывались людьми, не имеющими представления о защите/взломе. Просто за якобы-красивые глаза..
(20)
1. восстановить код-то можно… Но ты будешь разбираться в алгоритме где все переменные/процедуры названы перем1/проц1? Я — НЕТ. 🙂
2. «байт-код» — это скомпилированная обработка, как я себе представляю. Т.е. то что получается если ты устанавливаешь пароль или говоришь поставлять без исходного кода. Его тоже можно обфусцировать, таким образом ни один декомпилятор, ни за какие красивые глазки его на автомате не вытащит. Впрочем, в этом вопросе есть здесь более сведущие люди 🙂
3. Можно с ВК, можно без. Это дело вкуса.
4. см. п. 2.
(21) т.е. п.2 и п.4 — одно и то же? Понятно. Сужаем круг 🙂
Просто бороться с обфускацией может тупой студент, время которого стоит копейки. Допускаю ситуацию, когда будет выгоднее взять на месяц (типа «испытательный срок») студента с условием «разобраться с задачей». И он разберётся.
А вот по поводу «Можно с ВК, можно без» — здесь поподробнее, пожалуйста.
Кстати, поставка без исходного кода с v7 как сообщается? Это-ж вроде только для v8?
(22)
Если я, к примеру, закрою обработку с использованием всех 4-х приведенных методов, то ни один студент её НЕ взломает ни за месяц, ни за год (судя по тому какие нынче студенты пошли :)).
А что подробнее? Я тут в одной своей статье приводил пример, как можно ключевые моменты, типа проверки срока использования демоверсии, написать на VBScript Encoded.
Я говорю тока про v8, семерки я в глаза не видел…
(23) статью , кстати, помню. Забыл только, что она твоя 🙂
Кроме того, v7 не имеет механизмов, присутствующих в v8, так что вариант — не универсальный.
С другой стороны — универсальность, наверное, и не нужна.. Нужна функциональность.
Всё-таки повторюсь ещё раз: то, что описал я, подразумевает, что обработка не содержит заблокированных участков. Она в принципе является урезанной. Там и разбираться-то не с чем будет..
Впрочем, проехали. По ходу — не догоняете.
Была статья «v7: «Живые» пользователи…(монитор без ВК, нужен ворд)» на мисте или на T1С. Кто помнит, в интересном месте там оказался код…
К вопросу о защите небольших отчетов можно добавить.
п.5. Размещение части кода в нестандартных местах обработки.
(25) в таблицах, что-ли?
видел классный пример с применением 1CPP шифрования и применения дополнительного глобального модуля,
но такой вариант не подойдет нужна 1СPP, как варианты для обычных модулей можно в StreamEditor.exe рас форматировать текст модуля и например двинуть все в право 🙂 сам видел как некоторые спецы дивились что в обработки нет кода в модуле 🙂
> видел классный пример с применением 1CPP шифрования
Чего? Какого шифрования?
Да, неплохо. В восьмерке можно обработку генерить на лету, из двоичных данных.
Соответственно, двоичные данные зашифровать.
МОжно обойтись и без EXE-файла. 😉
(29) так ведь опять-таки — я же не о конкретной реализации, а об идеологии… Конечно можно. Тут ведь вся фишка в том, чтобы полнофункциональную обработку вообще не предоставлять (точнее — предоставлять только на период тестовой эксплуатации).
Зачем изобретать велосипед?
Тратить кучу времени на защиту чего-то, что стоит сравнимых денег со стоимостью КЗК-2…
Сложно потратить один раз 3750 р. и заниматься потом зарабатыванием денег. Частенько проще зарабатывать больше, чем экономить.
Фактически — то что должно быть исполнено, должно быть по-любому прочитано :). То есть, неважно, КАК будет зашифрован код, в конце-концов где-то он появится в явном виде. Отсюда мораль: у клиента не должно быть доступа до реального исходника ВООБЩЕ. То есть рулят только обфускаторы и бинарники (байт-код либо ВК с нужным функционалом). У 8ки, насколько мне известно, обработки могут поставляться без исходников, с только байт-кодом. У 77 то же самое делает КЗК-2. А то что для внешних компонент нужны админские права — это заблуждение.
(28) У 1С++ есть класс DynaCrypt, с методами ЗашифроватьСтроку и РасшифроватьСтроку. Возможно это и имелось ввиду.
(31) экономия, вообще-то, здесь ни при чём. Зачем тогда вообще что-то кодить? Лучше искать уже готовое и пригибать к своим задачам. Только всегда ли это правильно?
(32) ответь, как зарегистрировать ВК, не имея прав админа? Простой вопрос, надеюсь получить простой ответ 😉
(34) ответь, как зарегистрировать ВК, не имея прав админа? Простой вопрос, надеюсь получить простой ответ 😉
ответ в профиле у кого ты спрашиваешь.
JohnyDeath, спасибо за поддержку 🙂
Дуб, см.http://infostart.ru/projects/559 , и тамже мой комментарий под №8.
(35),(36) Принято. Убедили. Почти. Вот теперь бы то же самое — под *.NET бы…
Первый же вопрос: А НЕТ-то нафига?
А вообще, я конечно ВК под НЕТ не писал, но предполагаю, что их метод регистрации точно такой же — ведь 1Ска ничего про НЕТ не знает, т.е. запуск идет через обычный ком и загрузчик в «неуправляемой» (неНЕТовской) части компоненты. Если же имеется в виду, что для установки НЕТа админские права нужны — ну так это уже задача другого плана: вы ж не будете, например, с ВК весь дистрибутив НЕТ распространять? И установка НЕТа все-таки не обычное действие, это аналог например установки драйвера — вас же не удивляет что драйвера под админом ставятся?
(38) Предположение неверное. Framework является частью Windows и не требует отдельной установки (точнее — устанавливается автоматически при очередном обновлении, хотя, конечно, его, как и прочие пакеты обновления, можно отдельно скачать и отдельно установить).
А по «первому же» вопросу — продолжив ряд «нафига» — упрёмся в Ассемблер.
C#, например, очень удобный, приятный в работе язык. Писать на нём — одно удовольствие.
(16) Как исполнить — используется ВК, для ее регистрации не надо прав при использовании RegsrvEx.
далее — как сделать с минимальными трудозатратами ВК? Взять готовую.
(31) Проблема в том, что решение за 3750 ломается студентом (или не студентом?) за 5мин.
(39) а мне язык D по описанию нравится. правда еще не пробовал
2(40) Здорово! Давай я тебе зашлю защищенную обработку, а ты мне через 30 минут (в шесть раз больше времени тебе даю, чем ты тут высказал) ее обратно в открытом виде?
+(41) Ну, так как? Отвечать за свои слова будем?
идеи, конечно, детские. Окромя запутывания кода (толи обфускатором, толи просто идиотской индивидуальной манерой написания {тут мы вспомним Пита и ему икнется}) в деле защиты кода для 8-ки ничего не взлетит, имхо
(41) я про Катран, для снятия защиты еще нужен ключ. если ты про что другое — давай посмотрим
(44) Ха-ха. Лихо съехал! )))
2(44) Круто! Человек в (31) говорит о КЗК, а ты, отвечая ему, оказывается, о Катране говоришь. Вот ведь… Чудесная логика…
(45) да нет, я привык отвечать за свои слова, просто надо быть уверенным, что говорим об одном и том же.
(46) — «чего-то, что стоит сравнимых денег со стоимостью КЗК-2», КЗК-2 как я вижу стоит 5000р, а Катран мы покупали примерно за 4000 ~3750
и речь идет про 8.x
2(48) Да ладно, съехал уже.
(43) вот, блин.. Я им про методику — они мне про платформу.
(46) Что-то мне кацца, что сейчас ещё и не такие ходы конём пойдут 😉
а как насчет обычного шифрования текстов модулей при помощи RSA? кажется в 1СПП было что — то похожее, по крайней мере один мой знакомый хвастался.
также хорошая идя — скомпилированные модули, как говорилось выше.
кстати, есть виды длл без регистрации