Следующая функция предназначена для получения запроса веб-перехватчика Lemon Squeezy:
public ActionResult lsHook(LemonsqueezyWebhook lemonsqueezyWebhook)
{
...
}
Он работает так, как и ожидалось, с точки зрения полезных данных. Lemon Squeezy использует X-Signature, чтобы подтвердить, что запрос действительно поступил от Lemon Squeezy, а не от фишингового сайта. Ниже приведен пример их кода:
$secret = '[SIGNING_SECRET]'; // from your webhook settings
$payload = file_get_contents('php://input');
$hash = hash_hmac('sha256', $payload, $secret);
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';
if (!hash_equals($hash, $signature)) {
throw new Exception('Invalid signature.');
}
Вот мой код C#, который делает то же самое в ActionResult lsHook(LemonsqueezyWebhook лимонсквивебхук):
StringBuilder sb = new StringBuilder("X-Signature")
if (Request.Headers.AllKeys.Contains("X-Signature"))
{
foreach (string sValue in Request.Headers.GetValues("X-Signature"))
{
sb.Append(Environment.NewLine).Append(sValue);
}
Request.InputStream.Seek(0, SeekOrigin.Begin);
string sPayload = new StreamReader(Request.InputStream).ReadToEnd();
using (var sha256 = SHA256.Create())
{
byte[] payloadBytes = Encoding.UTF8.GetBytes(sPayload);
byte[] secretBytes = Encoding.UTF8.GetBytes("mysecret");
// Combine payload and secret
byte[] data = payloadBytes.Concat(secretBytes).ToArray();
// Hash the combined data
byte[] hash = sha256.ComputeHash(data);
sb.Append(Environment.NewLine + "hash: ").Append(BitConverter.ToString(hash).Replace("-", "").ToLower());
}
}
Вот что я получил по одному запросу на sb:
dab5a3c5f205f60aa09ab00098f67917e8fcc6b05e64d510b656d82f35bca97c
hash: 3ee77ac08f050e1338ca3a4a8c0162eb8ff9aa1fb7d89418881492a52da1cc37
Они не совпадают. sPayload выглядит правильно. Это объект json. Может ли кто-нибудь подсказать возможную причину?
Обновление:
После var sha256 = SHA256.Create() был заменен на var sha256 = HMACSHA256.Create(), я получил следующее:
10de6aa343a95017309a7e7d3b683fb35afa4be9f67c41c2d87ae1f9872e0914
hash: 9dceac34439623bff6549b2dd264672e0cc20910
Подробнее здесь: https://stackoverflow.com/questions/776 ... -signature
Создайте хэш с помощью ASP.NET MVC для Lemon Squeezy X-Signature. ⇐ C#
Место общения программистов C#
-
Anonymous
1735215237
Anonymous
Следующая функция предназначена для получения запроса веб-перехватчика Lemon Squeezy:
public ActionResult lsHook(LemonsqueezyWebhook lemonsqueezyWebhook)
{
...
}
Он работает так, как и ожидалось, с точки зрения полезных данных. Lemon Squeezy использует X-Signature, чтобы подтвердить, что запрос действительно поступил от Lemon Squeezy, а не от фишингового сайта. Ниже приведен пример их кода:
$secret = '[SIGNING_SECRET]'; // from your webhook settings
$payload = file_get_contents('php://input');
$hash = hash_hmac('sha256', $payload, $secret);
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';
if (!hash_equals($hash, $signature)) {
throw new Exception('Invalid signature.');
}
Вот мой код C#, который делает то же самое в ActionResult lsHook(LemonsqueezyWebhook лимонсквивебхук):
StringBuilder sb = new StringBuilder("X-Signature")
if (Request.Headers.AllKeys.Contains("X-Signature"))
{
foreach (string sValue in Request.Headers.GetValues("X-Signature"))
{
sb.Append(Environment.NewLine).Append(sValue);
}
Request.InputStream.Seek(0, SeekOrigin.Begin);
string sPayload = new StreamReader(Request.InputStream).ReadToEnd();
using (var sha256 = SHA256.Create())
{
byte[] payloadBytes = Encoding.UTF8.GetBytes(sPayload);
byte[] secretBytes = Encoding.UTF8.GetBytes("mysecret");
// Combine payload and secret
byte[] data = payloadBytes.Concat(secretBytes).ToArray();
// Hash the combined data
byte[] hash = sha256.ComputeHash(data);
sb.Append(Environment.NewLine + "hash: ").Append(BitConverter.ToString(hash).Replace("-", "").ToLower());
}
}
Вот что я получил по одному запросу на sb:
dab5a3c5f205f60aa09ab00098f67917e8fcc6b05e64d510b656d82f35bca97c
hash: 3ee77ac08f050e1338ca3a4a8c0162eb8ff9aa1fb7d89418881492a52da1cc37
Они не совпадают. sPayload выглядит правильно. Это объект json. Может ли кто-нибудь подсказать возможную причину?
[b]Обновление:[/b]
После var sha256 = SHA256.Create() был заменен на var sha256 = HMACSHA256.Create(), я получил следующее:
10de6aa343a95017309a7e7d3b683fb35afa4be9f67c41c2d87ae1f9872e0914
hash: 9dceac34439623bff6549b2dd264672e0cc20910
Подробнее здесь: [url]https://stackoverflow.com/questions/77669067/create-hash-with-asp-net-mvc-for-lemon-squeezy-x-signature[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия