Сейчас везде говорят что это уже пздц как небезопасно. А вот onpay использует sha1 для проверки платежки. Насколько это реально безопасно? Я так понимаю все эти сервисы для "дешифровки" в реале просто база переборов начиная с самых простых односимвольных и понарастающей? Каждый добавленный символ в длину строки добавляет времени в геометрической прогрессии. В этой подписи довольно большая строка навскидку символов 15. Бояться нечего?
onpay - генератор платежек. sha1 для проверки платежки, как защита от фейковых. У всех же платежек вроде одна система. После оплаты клиента у них на сайте, они присылают ответ на твой сервер и хэш строки, чтобы мы могли проверить, что все верно. У них этот хэш в sha1
Там строка туда входят сумма платежа, баланс, номер платежа, секретный ключ и все это в sha1 присылают для сверки. По сути это контрольная сумма
Во-первых нужно знать урл ответа. Во-вторых у платежных систем имеется еще api, по которому можно перепроверить (не у всех) Выставляем задержку на обработку ответа в 1-2 секунду, ставим максимальный срок оплаты платежа и можем спать спокойно.
мы формируем ссылку на оплату. Пользователь переходит по ней и платит. После того как он оплатил, то нам приходит ответ,с параметрами оплаты. сумма, айди и т.д. и приходит дополнительно контрольная подпись sha1 чтобы например наш клиент не подделал платежнкую ссылку и не заплатил например вместо 100 рублей всего 1. А то и вовсем подделал запрос. В вебмани схема такая же. там есть md5 но там прям пишут, что md5 не юзайте, юзайте sha256. вообще у меня не те масштабы чтобы боятся фейковых оплат. Если что-то будет не так, я увижу это достаточно быстро. Спрашиваю скорее для общего развития.
@Познающий php если схема ограничена тем, что ты написал, то получается я могу перехватить реальный ответ онпэй на платеж на 100 руб и 100 раз его тупо повторить и твой сайт зачтет платежей на 10к?
Если ты сможешь подделать подпись sha1, то в теории да. --- Добавлено --- Вернее не подделать, а расшифровать чтобы узнать секретный ключ. Тогда ты сможешь подделывать платежи. В этом и вопрос моей темы, безопасна ли sha1
У OnPay есть возможность получения/проверки платежа, пусть разгадывают подпись сколько угодно - это ничего не даст.
Зачем мне секретный ключ, если у меня есть id, сумма, баланс и подпись и я фигачу одни и те же эти данные сто раз? Сработает это или нет, и почему?
Ответ на твой вопрос есть в моем посте на который ты отвечаешь. Каждый такой запрос я буду сверять с контрольной подписью. Если ты узнаешь секретный ключ, то значит сработает. --- Добавлено --- Я пожалуй просто буду пользоваться и похyй на sha1, мне надоела эта игра
Дополнительная проверка. Подобно двух факторной авторизации. Но так как вы рассуждаете, то вообще зачем придумали логины и пароли их же можно взломать, точно также - перебором. А если у вас еще и подтверждение пароля по sms, то вдруг телефон потеряете, а хацкер его найдет и сломает и все равно войдет в ту или иную систему под вашим аккаунтом. Здесь можно судить и о ненадежности телефонов. Если вы кроме проверки подписи ничего не делаете - это выглядит следующим образом: Вы продаете валенки покупателю по безналу, он говорит что деньги перевел, и вы ничего не проверяя, верите на слово и отдаете валенки. Хотя при нормальном раскладе стоит убедиться в том, что деньги зачислены и в нужном объеме.
Ничего страшного, лучше перебдеть, чем недобдеть. Особенно в вопросах денег. Просто мне лично кажется странным, что сейчас даже пароли для форумах, которые никому не всрались, даже если поломают, не рекомендуют хешировать этими функциями, а в платежках юзают. Мне интересен теоретический аспект скорее.
@Познающий php из хэша невозможно восстановить исходную стоку, можно найти лишь коллизию. Вот ты не ответил на вопрос, пришлось лезть в доки. Повторять один и тот же запрос бессмысленно, потому что в нём присутствуют уникальные одноразовые id заказа и id платежа. Предполагается, что мерчант контролирует, чтобы один и тот же заказ не был оплачен дважды. Получается, что заполучив подпись, кулхацкер в лучшем случае вычислит коллизию для получения такой же подписи конкретно для этого запроса. Она будет отличаться от оригинального секретного ключа, поэтому если изменить сумму или номер заказа и захэшить, получится неправильная подпись. Поэтому вычисленную строку не получится использовать даже 1 раз. Это отличается от многоразового пароля. В случае с паролем, найденную строку можно использовать снова и снова, пока не изменится пароль (или соль).
я согласен с Василием [vs] и хочу добавить что безопасность вопрос не абсолютный, а относительный. взлом хеша занимает время. если в этом onpay хеш используется для проверки, то могу предположить, что его действие ограничено небольшим отрезком времени, за который его просто не успеть подобрать. одноразовость плюс ограниченность во времени дают вполне высокий уровень защиты. вот и всё.