как защитить конфигурацию от изменений и идентифицировать данные?

  1. 7 г. назад

    мы отправляем клиенту конфигурацию, которая подключается к рабочей базе(com), формирует текст запроса, отправляет результат запроса к нам (через наш веб-сервис ).
    как можно сделать так, чтобы клиент не смог изменить текст запроса и результат при отправке?

    отбрасывая сразу варианты:
    - не давать доступ в конфигуратор - файловая ломается на раз
    - пароль на модули - ломается
    - поставка без исходных кодов - ломается еще быстрее
    - обфускация - не вариант, клиент может подменить результат

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

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

    Какие еще есть варианты?

    Ответы: (4) (13) (15)
  2. Текст запроса и хеш тоже никак - теоретически, ибо восьмерка создана для народа

  3. Пишите программу и компилируйте в нативный код.

    Ответы: (3)
  4. (2) клиенты скорее всего захотят посмотреть код, который выполняется. в должны иметь на это право. Но - только смотреть

    Ответы: (5)
  5. (0)создайте свою операционную систему на базе bsd, и можно контролировать все шаги в разрезе шагов

  6. (3) Добавить в программулину гуи-интерфейс )

  7. В общем программа будет качать текст запроса с вашего сервака по хешу-мешу и юзать и кидать результат вам. Для юзера будет возможность видеть текст запроса и логи.
    Написать на си шарп, закомпилить в натив.

  8. Можно еще части кода передавать как в тим вьюере.

  9. А вообще овчина выделки не стоит. Все запутано. Свою родную базу они, стало быть, защитили от внешних соединений. Делать выгрузку в другую базу? Типа тоже фейл. А в своей че типа вообще ничего нельзя поменять? Короче, не стоит браться за это дело.

    Ответы: (9)
  10. jsmith82 А вообще овчина выделки не стоит. Все запутано. Свою родную базу они, стало быть, защитили от внешних соединений. Делать выгрузку в другую базу? Типа тоже фейл. А в своей че типа вообще ничего нельзя поменять? Короче, не стоит браться за это дело.

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

  11. Вообще тут, я понял, другая задача. Им нужно видеть конфу в прозрачном виде.
    А нельзя с хеш-суммой самой конфы оперировать. Вы кидаете на вход, он пишет чето незатейливо в самого себя, потом при отправке опять кидает хеш-сумму и вы сравниваете.

    Ответы: (12)
  12. Хотя даже в самого себя писать, наверно, не надо.

  13. jsmith82 Вообще тут, я понял, другая задача. Им нужно видеть конфу в прозрачном виде.
    А нельзя с хеш-суммой самой конфы оперировать. Вы кидаете на вход, он пишет чето незатейливо в самого себя, потом при отправке опять кидает хеш-сумму и вы сравниваете.

    прогер запоминает хеш, потом его подставляет при отправке

  14. (0) скрепи печатями и подписями на этапе тестирования.

    а потом пускай хоть меняют/ломают. Ремонт разбирательство уже за доп плату.

    Ибо по другому никак. могут стереть нафигш вашу конфигурацию и сказать, что небыло ниче.

    Ответы: (15)
  15. + понятно, что есть много способов, как усложнить задачу опытному прогу по взлому.
    Но есть ли 100% способ получения достоверной информации?

  16. Xapac (0) скрепи печатями и подписями на этапе тестирования.

    а потом пускай хоть меняют/ломают. Ремонт разбирательство уже за доп плату.

    Ибо по другому никак. могут стереть нафигш вашу конфигурацию и сказать, что небыло ниче.

    ломают и отправляют ломанные данные. а мы ни сном ни духом

    Ответы: (20)
  17. текст запроса надо формировать у себя. с клиента только параметры

    Ответы: (17)
  18. sf текст запроса надо формировать у себя. с клиента только параметры

    ну так текст запроса надо и возвращать. в этот момент клиент может его подменить

  19. мд5 от запроса в ответ ставь
    если оно твоё, то принимай ответ иначе пошёл в одно место клиент это выборка не моего запроса

    Ответы: (19)
  20. Xapac мд5 от запроса в ответ ставь
    если оно твоё, то принимай ответ иначе пошёл в одно место клиент это выборка не моего запроса

    что мешает клиенту получить мд5 от входящего запроса, запоминать его, менять текст запроса и подсовывать правильный мд5 ?

    Ответы: (21)
  21. Stim ломают и отправляют ломанные данные. а мы ни сном ни духом

    Что тебе не нравится? ломают данные или структуру данных?
    p.s. клиент всегда сможет сломать и отправить тебе фуфло. можно попробовать передавать код для выполнения с сервера и следить при этом за сессией, но тут все равно сломать можно, только сложнее
    p.s.s вариант с программной защитой кода не предлагать? были же вроде решения когда-то для 1с

    Ответы: (23) (39)
  22. Stim что мешает клиенту получить мд5 от входящего запроса, запоминать его, менять текст запроса и подсовывать правильный мд5 ?

    :)

  23. что мешает клиенту получить мд5 от входящего запроса, запоминать его, менять текст запроса и подсовывать правильный мд5 ?

    у тебя на сервере то его мд5 он не поменяет

    Ответы: (24)
  24. sf Что тебе не нравится? ломают данные или структуру данных?
    p.s. клиент всегда сможет сломать и отправить тебе фуфло. можно попробовать передавать код для выполнения с сервера и следить при этом за сессией, но тут все равно сломать можно, только сложнее
    p.s.s вариант с программной защитой кода не предлагать? были же вроде решения когда-то для 1с

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

    Ответы: (26)
  25. Xapac что мешает клиенту получить мд5 от входящего запроса, запоминать его, менять текст запроса и подсовывать правильный мд5 ?

    у тебя на сервере то его мд5 он не поменяет

    не поменяет. но подсунет нужный

  26. ЗапросТекст = ВебСервис.ПолучитьЗапрос();
    Запрос.Текст = ЗапросТекст;
    РезультатВыполнения = Звпрос.Выполнить.Выгрузить();
    ВебСервис.ПоместитьРезультатВыполненияЗапроса(РезультатВыполнения);
    

    у тебя пользователи заходят и меняют код я верно понял?

    если они такие пипелацы, то они могут и в "ПоместитьРезультатВыполненияЗапроса" поместить любую таблицу. и всем пофигу запрос это или нет.

    Ответы: (27)
  27. Stim на данные мне все равно.

    тогда зачем условие?

    Stim наша конфигурация невзламываемая и данные, которые мы получили - были сформированы нашей невзламываемой конфой и ничем другим

    просто проверяй струкрутуру получаемого результата.
    а то если на данные все равно - пользователь может вам отчеты из копии присылать

    Ответы: (28)
  28. Xapac

    ЗапросТекст = ВебСервис.ПолучитьЗапрос();
    Запрос.Текст = ЗапросТекст;
    РезультатВыполнения = Звпрос.Выполнить.Выгрузить();
    ВебСервис.ПоместитьРезультатВыполненияЗапроса(РезультатВыполнения);
    

    у тебя пользователи заходят и меняют код я верно понял?

    если они такие пипелацы, то они могут и в "ПоместитьРезультатВыполненияЗапроса" поместить любую таблицу. и всем пофигу запрос это или нет.

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

  29. sf тогда зачем условие?

    просто проверяй струкрутуру получаемого результата.
    а то если на данные все равно - пользователь может вам отчеты из копии присылать

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

  30. Организовать терминальный сервер уже предлагали?

    Ответы: (32)
  31. какая разница, что они там подменят ?

    отправку шифруй ключом, который у них

    Ответы: (31)
  32. zak555 какая разница, что они там подменят ?

    отправку шифруй ключом, который у них

    отправку чего? Данных клиента? кто мешает им получить свои данные и подсунуть их для шифрования ?

    Ответы: (33) (35)
  33. Fynjy Организовать терминальный сервер уже предлагали?

    организовать терминальный сервер у каждого клиента?
    без комментариев

    Ответы: (36) (38) (49)
  34. Stim кто мешает им получить свои данные и подсунуть их для шифрования ?

    а кто мешает им из копии с неверными данными запускать?
    бред же

    Ответы: (34)
  35. sf а кто мешает им из копии с неверными данными запускать?
    бред же

    читай 28

  36. (31) клиент отправляет запрос к тебе на сервер своими сертификатом
    сервер идентифицировав сертификат, начинает разбирать запрос и отправляет ответ в зад

    Ответы: (37)
  37. (32) линь разверни, к ней через обычный rdp клиент смогу подключиться

    Ответы: (38)
  38. zak555 сервер идентифицировав сертификат, начинает разбирать запрос и отправляет ответ в зад

    данные у клиента

    Ответы: (44) (46)
  39. zak555 (32) линь разверни, к ней через обычный rdp клиент смогу подключиться

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

    Ответы: (40) (42)
  40. стим, а это как ломать клиенты будут?

    sf можно попробовать передавать код для выполнения с сервера и следить при этом за сессией

    Ответы: (41)
  41. (38) зачем тебе впн ?

    Ответы: (42)
  42. sf а и следить при этом за сессие

    а как за сессией следить?

    Ответы: (45)
  43. zak555 (38) зачем тебе впн ?

    ты описание принципиально не читаешь? читай сабж

  44. У них внешнего айпи по ходу нет.

  45. (37) так данные клиента надо отправить на сервер ?
    тоже самое

    тут без разницы -- правильно к клиента в базе данные заведены или он и "подделал", -- важно что он это дело подписал подписью и отправил

    Ответы: (46)
  46. Stim а как за сессией следить?

    ну вот, началось [smile=:D]

  47. zak555 (37) так данные клиента надо отправить на сервер ?
    тоже самое

    тут без разницы -- правильно к клиента в базе данные заведены или он и "подделал", -- важно что он это дело подписал подписью и отправил

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

  48. передавай ключ сессии и им подписывай ответ по хитрому алгоритму, который пользователь не знает
    например reverse(md5(uid+secret_key))

  49. еще вариант есть, можно перед получением запроса проверять изменялась ли конфигурация.

    Ответы: (52)
  50. (32) чего ты тупишь? Организовать у себя ТS. Опубликовать в нем приложение и урезать права - профит.

    Ответы: (50)
  51. Fynjy Организовать у себя ТS. Опубликовать в нем приложение и урезать права - профит

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

    Ответы: (51)
  52. sf осталось всего ничего, придумать как это приложение будет дергать данные с клиентской базы.

    ага. чукча же только пишет, читать не хочет

    Ответы: (58)
  53. sf еще вариант есть, можно перед получением запроса проверять изменялась ли конфигурация.

    ну да. только прог напишет заглушку типа
    ИзмененаБаза = ЛОЖЬ;

    Ответы: (55)
  54. Объясни что нужно зашитить

    Ответы: (54)
  55. zak555 Объясни что нужно зашитить

    Нужно обеспечить гарантию того, что данные, полученные от клиента - получены в результате выполнения наших и только наших запросов.
    Для этого нужно либо максимально защитить базу, собирающие эти данные, либо сделать невозможной подделку текстов запросов.

    Ответы: (64)
  56. Stim ну да. только прог напишет заглушку типа
    ИзмененаБаза = ЛОЖЬ;

    чего? ты константу что ли заводить собрался? проверяй саму конфигурацию. тебе же нужны конкретные объекты метаданных с заранее известными id

    Ответы: (56)
  57. sf чего? ты константу что ли заводить собрался? проверяй саму конфигурацию. тебе же нужны конкретные объекты метаданных с заранее известными id

    блин, ну какая разница. все, что я напишу легко может быть заменено программистом клиента.

    ИзмененаБаза = СуперСложнаяПроцедураПередаетПараметрыБазыНаВебСерверСКлючом();
    ИзмененаБаза = ЛОЖЬ;// программист клиента Иванов. Ахахаха.
    
    Ответы: (57)
  58. (56) проверяй не 1С. тебе нужно-то подключиться к базе и посмотреть в конфигурацию.

  59. (51) та да чукча читатель. Могу предложить тогда шифрованный vbs.

    Ответы: (59) (60)
  60. Fynjy тогда шифрованный vbs.

    это?

    Ответы: (63)
  61. Fynjy Могу предложить тогда шифрованный vbs

    Клиент должен иметь возможность посмотреть исполняемый код. Иначе обвинит во всех смертных грехах.
    Ты бы позволил своим бухам ставить шифрованный vbs?

    Ответы: (62) (65)
  62. А шифрованый клиент-банка значит можно?

  63. Stim Ты бы позволил своим бухам ставить шифрованный vbs?

    а зачем его ставить?

    Ответы: (63)
  64. (62) и я про это ) что мешает зашить его в конфу.
    (59) да

  65. (54) что собираешь?

  66. (60) Чувствую, нужно менять бизнес-процесс. А то и шашечки, и ехать. Отцы-основатели менеджмента негодуют.

  67. Грубо говоря, если есть такой сильный интерес к неискаженным данным, то нужны большие инвестиции для конечного игрока на рынке. А не "мифические защищенные конфигурации". Нужна соответствующая инфраструктура, где бы люди платили деньги за безопасность данных. А вот так вот по-детски - не покатит. Ну, это я просто мало инфы знаю.

  68. Возьми принцип клиента банка. Показывай пользователю перед отправкой то, что ты себе забираешь. Остальное - юридические ньюансы.

  69. Цифровые подписи изобретаешь?

или зарегистрируйтесь чтобы ответить!