Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1023,37 +1023,20 @@ def get_order_monitop():
|
|
1023 |
|
1024 |
|
1025 |
# Функция для валидации подписи ВКонтакте
|
1026 |
-
def is_valid(*,
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
# Создаем подпись
|
1042 |
-
hash_code = b64encode(HMAC(secret.encode(), data_to_sign.encode(), sha256).digest()).decode('utf-8')
|
1043 |
-
decoded_hash_code = hash_code[:-1].replace('+', '-').replace('/', '_')
|
1044 |
-
|
1045 |
-
# Получаем подпись из параметра "sign"
|
1046 |
-
received_sign = query_params.get('sign', [None])[0]
|
1047 |
-
|
1048 |
-
# Логирование для отладки
|
1049 |
-
logging.debug(f"Строка для подписи: {data_to_sign}")
|
1050 |
-
logging.debug(f"Вычисленная подпись (Base64): {decoded_hash_code}")
|
1051 |
-
logging.debug(f"Полученная подпись из запроса: {received_sign}")
|
1052 |
-
|
1053 |
-
return received_sign == decoded_hash_code
|
1054 |
-
except Exception as e:
|
1055 |
-
logging.error(f"Ошибка при проверке подписи: {str(e)}")
|
1056 |
-
return False
|
1057 |
|
1058 |
# Маршрут для получения заказа
|
1059 |
@app.route('/get_order', methods=['POST'])
|
|
|
1023 |
|
1024 |
|
1025 |
# Функция для валидации подписи ВКонтакте
|
1026 |
+
def is_valid(*, query: dict, secret: str) -> bool:
|
1027 |
+
"""Check VK Apps signature"""
|
1028 |
+
# Сортируем параметры, начинающиеся с "vk_"
|
1029 |
+
vk_subset = OrderedDict(sorted((k, v) for k, v in query.items() if k.startswith("vk_")))
|
1030 |
+
|
1031 |
+
# Формируем строку для подписи и вычисляем подпись HMAC
|
1032 |
+
data_to_sign = urlencode(vk_subset, doseq=True)
|
1033 |
+
hash_code = b64encode(HMAC(secret.encode(), data_to_sign.encode(), sha256).digest())
|
1034 |
+
|
1035 |
+
# Декодируем и преобразуем подпись
|
1036 |
+
decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
|
1037 |
+
|
1038 |
+
# Сравниваем полученную подпись с подписью из запроса
|
1039 |
+
return query["sign"] == decoded_hash_code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1040 |
|
1041 |
# Маршрут для получения заказа
|
1042 |
@app.route('/get_order', methods=['POST'])
|