ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
October 02, 2019, 01:49:08 PM |
|
Серъезно, она же еле ползает наверно.
Отнюдь.
|
|
|
|
SteepPepper
Jr. Member
Offline
Activity: 198
Merit: 8
|
|
October 05, 2019, 12:19:28 PM |
|
Вашу биржу пытаются взломать методом социальной инженерии. говорят что знают вас. хороший признак. значит других методов нет) подробности тут https://discord.gg/QAnjK7UСори но я вынужден опубликовать здесь, так как потребляю ваш код но еще не доконца не углубился в него. извините. думаю будут буртить
|
|
|
|
SteepPepper
Jr. Member
Offline
Activity: 198
Merit: 8
|
|
October 05, 2019, 01:22:59 PM |
|
Жесть. Бутят. Очень быстро. Скорость Брута зависит от исходящего канала. нужно тайминг вставить. Соль нельзя сменить после первого пуска или я не понял как. Нужно тайминг вставить, что-бы ответ на неверный пароль приходил с задержкой а не мгновенно.. Я понимаю что капча решает, но она уже давно не нужна от слова совсем, ну разве людей только мучать.
|
|
|
|
startsts
|
|
October 05, 2019, 03:22:18 PM |
|
Серъезно, она же еле ползает наверно.
Отнюдь. Тут в принципе не подходит sqlite так как в ней нет блокировки на уровне строк, при большой нагрузке это необходимо иначе операции просто пойдут неправильно. Жесть. Бутят. Очень быстро. Скорость Брута зависит от исходящего канала. нужно тайминг вставить. Соль нельзя сменить после первого пуска или я не понял как. Нужно тайминг вставить, что-бы ответ на неверный пароль приходил с задержкой а не мгновенно.. Я понимаю что капча решает, но она уже давно не нужна от слова совсем, ну разве людей только мучать.
У меня был опыт управления биржей, решается тут все просто, каптча появляется после 2 неверных попыток ввода пароля. После 10 неверных попыток блокировать доступ на час.
|
|
|
|
SteepPepper
Jr. Member
Offline
Activity: 198
Merit: 8
|
|
October 05, 2019, 11:20:38 PM |
|
У меня был опыт управления биржей, решается тут все просто, каптча появляется после 2 неверных попыток ввода пароля. После 10 неверных попыток блокировать доступ на час.
не рабочий вариант. узнав логины (скажем из бирживовго чата) можно вредить, блокируя других пользователей на постоянной основе. А не зная логины может тоже можно блокировать вход пользователей, если стучаться очень быстро... зависит от кода на стороне сервера.
|
|
|
|
startsts
|
|
October 06, 2019, 04:06:53 AM |
|
У меня был опыт управления биржей, решается тут все просто, каптча появляется после 2 неверных попыток ввода пароля. После 10 неверных попыток блокировать доступ на час.
не рабочий вариант. узнав логины (скажем из бирживовго чата) можно вредить, блокируя других пользователей на постоянной основе. А не зная логины может тоже можно блокировать вход пользователей, если стучаться очень быстро... зависит от кода на стороне сервера. Я имею ввиду бан по IP, а столько прокси чтобы после каждых 2 попыток менять IP хакеры не найдут. Банить можно как в форме авторизации так и прямо на сервере через iptables, в таком случае у хакера не откроется ни одна страница и уменьшится нагрузка на платформу
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
October 06, 2019, 08:55:53 PM |
|
Тут в принципе не подходит sqlite так как в ней нет блокировки на уровне строк, при большой нагрузке это необходимо иначе операции просто пойдут неправильно.
Где про эту особенность sqlite можно почитать? ЗЫ брутфорс сайта с капчей это бесполезное занятие. Не нужны никакие блокировки.
|
|
|
|
startsts
|
|
October 06, 2019, 10:41:33 PM |
|
Тут в принципе не подходит sqlite так как в ней нет блокировки на уровне строк, при большой нагрузке это необходимо иначе операции просто пойдут неправильно.
Где про эту особенность sqlite можно почитать? ЗЫ брутфорс сайта с капчей это бесполезное занятие. Не нужны никакие блокировки. почитайте о транзакциях в базах данных. Или давайте представим ситуацию: пользователь производит операцию создания ордера и у него баланс 0.01 BTC который вычитается и в базу записывается 0, и в этот же момент у него срабатывает другой ордер который также видит баланс 0.01 и хочет прибавить к нему 0.005 за исполненный ордер на продажу. В зависимости от того какая операция запишет в базу первая или вторая баланс будет либо 0 либо 0.015 и то и другое неправильно. Должна быть блокировка на уровне строки которая не позволит получить баланс пользователя из базы пока не завершена другая операция. В sqlite можно блокировать только таблицу полностью, это сильно уменьшит производительность
|
|
|
|
laiyskylone
|
|
October 07, 2019, 02:42:32 AM |
|
Тут в принципе не подходит sqlite так как в ней нет блокировки на уровне строк, при большой нагрузке это необходимо иначе операции просто пойдут неправильно.
Где про эту особенность sqlite можно почитать? ЗЫ брутфорс сайта с капчей это бесполезное занятие. Не нужны никакие блокировки. почитайте о транзакциях в базах данных. Или давайте представим ситуацию: пользователь производит операцию создания ордера и у него баланс 0.01 BTC который вычитается и в базу записывается 0, и в этот же момент у него срабатывает другой ордер который также видит баланс 0.01 и хочет прибавить к нему 0.005 за исполненный ордер на продажу. В зависимости от того какая операция запишет в базу первая или вторая баланс будет либо 0 либо 0.015 и то и другое неправильно. Должна быть блокировка на уровне строки которая не позволит получить баланс пользователя из базы пока не завершена другая операция. В sqlite можно блокировать только таблицу полностью, это сильно уменьшит производительность Ребята на счет производительности и прочего да, но она сама легковестная и мобильная да и человек делает же сам поэтому использует то что ему нравиться, проект же open source поэтому вы там можете у себя подпилить и юзать хоть mongo хоть postgres и даже закомить в главный реп а там уже обсудить все и дополнить разработку. А так спорить можно очень долго и рассказывать и про транзакции и прочее
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
October 07, 2019, 04:38:55 AM |
|
Во первых, арифметические операции можно делать прямо внутри sql update. В опенсорсной версии у меня так и делается... Во вторых, если по уму, то базу надо организовывать по методу двойной бухгалтерской записи. В таком случае вообще нет операций update, а есть только insert , а итог считается селектом. Ошибки в таком случае практически невозможны.
В третьих, в sqlite ЕСТЬ транзакции. Внезапно?
|
|
|
|
startsts
|
|
October 07, 2019, 12:31:00 PM |
|
Во первых, арифметические операции можно делать прямо внутри sql update. В опенсорсной версии у меня так и делается... Во вторых, если по уму, то базу надо организовывать по методу двойной бухгалтерской записи. В таком случае вообще нет операций update, а есть только insert , а итог считается селектом. Ошибки в таком случае практически невозможны.
В третьих, в sqlite ЕСТЬ транзакции. Внезапно?
Далеко не все операции можно так сделать. Например два пользователя нажали купить биткоин по 8000 USDT с разницой в миллисекунды, нужно заблокировать строки базы с ордерами по 8000 пока проводятся операции с балансом первого пользователя, чтобы паралеллельный процесс не использовал эти ордера для второго пользователя а ожидал, В sqlite нельзя заблокировать строки, блокируется сразу вся база при помощи транзакции EXCLUSIVE и ждать будет не только второй пользователь но и любые пользователи которые просто хотели посмотреть список ордеров или добавить свой ордер
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
October 07, 2019, 02:52:34 PM |
|
У меня в коде блокируются ордера по монете пока идет процессинг другого ордера. Но если по уму, то бухгалтерский сервер должен работать в отдельном процессе и действительно эксклюзивно блокировать бухгалтерскую базу пока идет какая-либо запись или группа записей. Что за блокировка строки я первый раз слышу?
|
|
|
|
startsts
|
|
October 07, 2019, 04:20:35 PM |
|
У меня в коде блокируются ордера по монете пока идет процессинг другого ордера. Но если по уму, то бухгалтерский сервер должен работать в отдельном процессе и действительно эксклюзивно блокировать бухгалтерскую базу пока идет какая-либо запись или группа записей. Что за блокировка строки я первый раз слышу?
В Mysql InnoDB можно блокировать строки при помощи SELECT FOR UPDATE после начала транзакции, другая попытка "SELECT FOR UPDATE" на эти же строки будет ожидать завершения транзакции. Если блокируется в коде то все ок, просто так можешь запустить приложение только в 1 поток, и не сможешь запустить параллельно
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
October 07, 2019, 04:22:30 PM |
|
node.js однопоточна принципиально.
|
|
|
|
ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
October 07, 2019, 04:59:07 PM |
|
В sqlite нельзя заблокировать строки, блокируется сразу вся база при помощи транзакции EXCLUSIVE и ждать будет не только второй пользователь но и любые пользователи которые просто хотели посмотреть список ордеров или добавить свой ордер
На чтение не блокируется, только на запись.
|
|
|
|
startsts
|
|
October 07, 2019, 05:42:53 PM |
|
node.js однопоточна принципиально.
И что будет при большой нагрузке? Я к тому что если бы блокировка производилась на уровне базы данных то можно было бы масштабировать систему добавляя сервера В sqlite нельзя заблокировать строки, блокируется сразу вся база при помощи транзакции EXCLUSIVE и ждать будет не только второй пользователь но и любые пользователи которые просто хотели посмотреть список ордеров или добавить свой ордер
На чтение не блокируется, только на запись. Тип EXCLUSIVE блокирует и на запись... но автор уже обьяснил что не использует ее а блокирует в коде
|
|
|
|
ligor
Full Member
Offline
Activity: 1246
Merit: 138
Hodl DeepOnion
|
|
October 07, 2019, 05:50:20 PM |
|
Тип EXCLUSIVE блокирует и на запись... но автор уже обьяснил что не использует ее а блокирует в коде
Не знаю уж для чего такой жесткий режим, по умолчанию DEFERRED , когда только запись в таблицу блокируется - вполне хватает.
|
|
|
|
r3l0c
Newbie
Offline
Activity: 2
Merit: 0
|
|
December 01, 2019, 11:09:13 AM |
|
SQLite, серьезно? На любом пампе проект сломается. ТС видимо не знаком с напором торговых роботов. Масштабирование- никакое.
|
|
|
|
r3l0c
Newbie
Offline
Activity: 2
Merit: 0
|
|
December 01, 2019, 02:32:24 PM |
|
Чувак, если тебе говорят одно и тоже- есть повод задуматься. Я не говорю даже о качестве кода и наличия там велосипедов в виде обертки для базы- первое что я заметил, видимо мы любим делать бесполезную работу и не знаем о sequelize. Чувак, критика- путь к совершенству. И да, я не nodejs разработчик и ни разу с ним не работал, но моего опыта хватает что бы писать об этих недочетах с уверенностью. И советую провести нагрузочное тестирование отработки ордеров. Ну в секунду хотяб 5к ордеров чтоб выставлялось, 1к отменялось и 500 ордеров были бы самопересекающиеся, + параллельно 10к онлайн рандом по сайту. И посчитайте задержки. Я уверен, что нагрузочное тестирование заставит вас задуматься.
|
|
|
|
kzv (OP)
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
December 01, 2019, 02:49:01 PM |
|
Чувак поверь, диванных экспертов я наслушался начиная с первой страницы темы - можешь почитать. Все такие умные, но почему-то такие бедные )) Можешь сделать лучше - вперед и с песней!
|
|
|
|
|