За последние 24 часа нас посетили 6598 программистов и 529 роботов. Сейчас ищут 204 программиста ...

WooCommerce плагин для платежей в Bitcoin

Тема в разделе "Wordpress", создана пользователем apirone.com, 6 июн 2018.

  1. apirone.com

    apirone.com Новичок

    С нами с:
    6 июн 2018
    Сообщения:
    7
    Симпатии:
    0
    [​IMG]

    Устанавливайте опенсурсный плагин Apirone Bitcoin Forwarding, введите свой биткоин адрес и начинайте принимать оплату в криптовалюте.
    Вам не нужны никакие сторонние аккаунты, без подозрительных просьб прислать документы для проверки и утомительных регистраций.
    Биткоины пересылаются напрямую на ваш кошелек. Никто ими не владеет и заблокировать ваш аккаунт не может. Именно так это и должно работать!

    Работают все адреса биткоин-кошельков, даже нативные SegWit.

    Комиссия процессинга - фиксированная и составляет всего 0.0002 BTC, а суммы менее 100 000 Сатоши идут бесплатно.

    Ссылка на плагин:
    https://wordpress.org/plugins/apirone-bitcoin-forwarding/

    Подробности:
    https://apirone.com/ru/integrations/woocommerce
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.449
    Симпатии:
    1.738
    вы понимаете, что в XXI веке писать такой код, как у вас - это как минимум моветон. А учитывая, что вы работаете с платежами, но при этом нигде не используете prepared statements - то это просто опасно.

    Вы понимаете, что вы написали опасный код, который работает с платежами?

    Если не ответите сегодня - я снесу тему =)
     
  3. apirone.com

    apirone.com Новичок

    С нами с:
    6 июн 2018
    Сообщения:
    7
    Симпатии:
    0
    Этот плагин сделан без всяких переходов на сторонние сайты, без регистрации и ключей. In-house плагин.
    При этом вы можете сделать дизайн инвойса в стиле собственного интернет-магазина.
    Плагин получает колбэк от платежного сервера и обновляет статус платежа. А клиент мгновенно видит обновление статуса оплаты в магазине. Либо он может закрыть броузер и зайти позже.

    Расскажите, пожалуйста, подробнее - что вы имеете ввиду.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.449
    Симпатии:
    1.738
    это
     
  5. apirone.com

    apirone.com Новичок

    С нами с:
    6 июн 2018
    Сообщения:
    7
    Симпатии:
    0
    Всё разобрались. Спасибо!
    Завтра обновление выпустим.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.449
    Симпатии:
    1.738
    Ну как оно там?
     
  7. apirone.com

    apirone.com Новичок

    С нами с:
    6 июн 2018
    Сообщения:
    7
    Симпатии:
    0
    решили заодно переделать отображение счета, предпоказ суммы, ещё будем показывать все транзакции в списке (если оплата будет из несколько платежей) и заодно sql запросы переделаем. В них кстати не может быть уязвимостей, потому что все переменные проходят через мвс вукоммерца и только от доверительной ноды. Но мы всё равно сделаем prepared statements в нужном формате! Сразу после праздников выложим апдэйт.
    Скриншоты прикрепил.
     

    Вложения:

  8. apirone.com

    apirone.com Новичок

    С нами с:
    6 июн 2018
    Сообщения:
    7
    Симпатии:
    0
    Полностью переписали плагин!
    Счет на оплату сделан в лучших традициях банковских стандартов Visa и Mastercard. Удобное окошко, поддержка оплаты частями и мгновенное отображение транзакций. Всё работает под капотом вашего интернет-магазина, без каких либо инклюдов и переходов на сторонние сайты.



    Можно ставить: https://wordpress.org/plugins/apirone-bitcoin-forwarding/
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.449
    Симпатии:
    1.738
    Код (Text):
    1. MD5(NOW())
    не знаю, какую задачу выполняет этот кусок кода, но перебрать md5 от времени это задача слишком простая, чтобы полагать её сложной. Т.е. если этот секрет где-то используется, то этот секрет ниxуя не секрет...

    PHP:
    1. public function abf_check_data($apirone_order){
    2.     $abf_check_code = 100; //No value
    3.     if (!empty($apirone_order['value'])) {
    4.         $abf_check_code = 101; //No input address
    5.         if (!empty($apirone_order['input_address'])) {
    6.             $abf_check_code = 102; //No order_id
    7.             if (!empty($apirone_order['orderId'])) {
    8.                 $abf_check_code = 103; //No secret
    9.                 if (!empty($apirone_order['secret'])) {
    10.                     $abf_check_code = 104; //No confirmations
    11.                     if ($apirone_order['confirmations']>=0) {
    12.                         $abf_check_code = 105; //No key
    13.                         if (!empty($apirone_order['key'])) {
    14.                             $abf_check_code = 106; //No input transaction hash
    15.                             if (!empty($apirone_order['input_transaction_hash'])) {
    16.                                 $abf_check_code = 200; //No transaction hash
    17.                                 if (!empty($apirone_order['transaction_hash'])){
    18.                                     $abf_check_code = 201; //All data is ready
    19.                                 }                          
    20.                             }
    21.                         }                      
    22.                     }                  
    23.                 }
    24.             }
    25.         }
    26.     }
    27.     return $abf_check_code;
    28. }
    :D смешно
    попробуйте переписать в линейный код. у вас это пять минут займёт. зато выглядеть будет отлично.
     
    Zuldek нравится это.
  10. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    1.592
    Симпатии:
    119
  11. apirone.com

    apirone.com Новичок

    С нами с:
    6 июн 2018
    Сообщения:
    7
    Симпатии:
    0
    А вы затейник, igordata. :)

    1) Вот MD5(NOW()) пример 1d6262e2e196f8922536dd962f7932ec

    МД5 состоит из 32 символов [0-9a-zA-Z+/], т.е. что бы вскрыть его вам нужно 32^10 * 32^26 * 32^26.

    2) Напомню что этот метод используется для проверки по HTTP(s). А пакеты ходят не так быстро, как брутить локально на процессоре или видеокарте. Примерно вот столько 2,0859248397665137523388883849312e+93 нужно сделать запросов на сервер только что бы сбрутить этот мд5 ;)
    Я думаю либо сервер магазина сляжет, либо вас забанят.

    3) Вероятность коллизий мд5 крайне мала, но вероятна. К проверке добавляется ещё и биткоин-адрес получателя. Т.е. это усложнение брутфорса на 32^58 (в Base58).
    Подсчитать на сколько усложнится перебор вариантов?

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

    PS: а вообще, хочу сказать Вам большое спасибо! Вы нам действительно очень помогаете и делаете независимое код-ревью.

    Да, abf_check_data сделаем что бы было не только функционально, но и красиво. Всё же это опенсурс. А в следующем релизе вообще сделаем отдельную библиотечку. Потому что мы написали уже пять(!) плагинов для разных CMS (https://apirone.com/integrations/) и есть общие функции, которые пора выносить отдельно.

    Спасибо!
     
    #11 apirone.com, 17 авг 2018
    Последнее редактирование: 17 авг 2018
  12. oolleegg55

    oolleegg55 Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    17
    Симпатии:
    2
    За что забанили в каталоге?
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.449
    Симпатии:
    1.738
    если посмотреть в ваши исходники, то видно, как формируется исходная строка.
    об этом вы думали?
    т.е. для того, чтобы перебрать MD5(NOW()) имея хеш 1d6262e2e196f8922536dd962f7932ec мне не нужно перебором ебошить все возможные строки. Мне достаточно перебрать md5 от времени, примерно даже зная время.
    NOW() возвращает "YYYY-MM-DD HH-MM-SS", это значит, что строка меняется только один раз в секунду. В часе 3600 секунд, в сутках 86400. Итого за месяц мы имеем 2.6 миллиона разных возможных строк, за год всего 31.5 миллиона.
    Поэтому к сожалению 32^26 тут не катят.
    так что она не выше.
    В безопасности нельзя допускать даже мелких ошибок.
    --- Добавлено ---
    :D мне нравится крипта