Pull to refresh

Comments 10

Делаем однобуквенный ник и получаем чужие донаты, чей ник начинается с этой же буквы.




        #Приорбетенная вещь
        [string]$Item = $i.item_name
        #Количество вещей
        [UInt16]$Quantity = $i.Quantity

Эта информация отправляется с html страницы? Тогда пользовтаель сможет её подменить и получить любую вещь в любом количестве.


А если бы в майнкрафте можно было разделять команды, то пользователь смог бы любую команду запустить с правами админа/модератора (или чьи права дает RCON?)


# $i.Quantity = '; gamemode creative @a'
#Составляем команду 
$Command = '"' + "give " + $i.Player + " " + $i.Item + " " + $i.Quantity + '"'
Спасибо за такой комментарий, плюсанул.
Делаем однобуквенный ник и получаем чужие донаты, чей ник начинается с этой же буквы.
Хорошее замечание, нужно фиксить.
Эта информация отправляется с html страницы? Тогда пользовтаель сможет её подменить и получить любую вещь в любом количестве.
Нет, вся информация хранится на стороне PayPal, спуфинг невозможен.
А если бы в майнкрафте можно было разделять команды, то пользователь смог бы любую команду запустить с правами админа/модератора (или чьи права дает RCON?)
RCON имеет права консоли. То есть админа. Хорошая догадка, но опять же, вся информация хранится платежной системой.
upd: Ник игрока мы получали от Paypal и хранили его в файле.
Если ник начинался на ту же букву, человек мог затригерить отправку предмета. В таком случае ни покупатель, ни тот человек предмет бы не получили.
Вот фикс.

Почитал про IPN. У вас чуть ли не все возможные пункты безопасности нарушены.
https://developer.paypal.com/docs/ipn/integration-guide/IPNIntro/#ipn-protocol-and-architecture


  • Сервер MC и IPN Listener расположены на одном ip. А зная ip адрес листенера пользователь может сам иницировать POST запрос с нужными данными. Нужно проверять от кого запрос, или делать ссылку с рандомным патчем и проверять его:
    example.com?secret=fdf7sajsaklfj8saur32nnf82jr5298

  • Paypal не даёт гарантии что не будет повторного запроса с тем же id транзакции. Нужно его сохранять и проверять.
  • Paypal может отправить запрос раньше времени, нужно проверять чтобы статус был "completed". Так же paypal отправляет запросы о других событиях, таких как chargeback. В текущей реализации скрипт воспримет возврат средств как новое поступление.
  • Нужно проверять сумму платежа, потому что если "PayPal payment button" не защищена, то пользователь может отправить сумму меньше запрашиваемой.
Сервер MC и IPN Listener расположены на одном ip. А зная ip адрес листенера пользователь может сам иницировать POST запрос с нужными данными. Нужно проверять от кого запрос, или делать ссылку с рандомным патчем и проверять его:
Именно для этого в файл config.ps1 нужно ввести свой url. Listener не слушает запросы по своему ip адресу, если его не задать в качестве http префикса.
Paypal не даёт гарантии что не будет повторного запроса с тем же id транзакции. Нужно его сохранять и проверять.
Если дать ему статус 200 OK в ответ на его POST запрос, то IPN он посчитает как Delivered и больше слать его не будет. Остальные пункты автор добавил в todo, спасибо за замечания и плюс в карму.

Я надеюсь вы в курсе про EULA Minecraft'а и то, что далеко не на все в играх можно прикручивать донаты

ну очень сильно покоробило от регулярок
$Regex = [Regex]::new("of player ([^ ]+)")
    $Player = $Regex.Matches($_).value -replace "of player "
      
    if ($true -eq $Regex.Matches($_).Success) {
        #обратный вызов стартует тут
    }

в PS аж с версии 1.0 есть

if ($_ -match "of player ([^ ]+)") {
    $Player = $matches[1]
}

а иначе зачем вообще скобки?

и почему везде Import-Module вместо dotsource?

btw, помимо сказанного другими выше, складывать пути из имени игрока не очень хорошо. Мало ли, сделаю имя "../../ЧТО-НИБУДЬ_НЕХОРОШЕЕ"…
эта статья увеличила количество pay-to-win серверов.
Посмотрел бы видео «Как я сделал систему приема платежей в Minecraft на redstone» )

Сейчас самое сложное, увы, не технический прием платежей. А найти агрегатора, находясь в Беларуси... MCDonate и подобные малые позакрывалсь. UnitPay и покрупнее перешли в режим только для граждан РФ. Всяких пейпалов и скриллов у нас не было и врядли когда появятся. DonationAlerts и близкие аналоги любят внезапно банить без объяснения причин.

Не особо надеюсь, но может кто знает хоть какого-то живого платежного агрегатора для мелких донатов?

Sign up to leave a comment.