Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Websocket Authenticatino nonca #590

Open
kezibooo opened this issue Oct 19, 2024 · 1 comment
Open

Websocket Authenticatino nonca #590

kezibooo opened this issue Oct 19, 2024 · 1 comment

Comments

@kezibooo
Copy link

kezibooo commented Oct 19, 2024

Merhaba websocket ile authenticate yapıyorum ancak nonce değerinin ne olması gerektiğini hala tam olarak anlayamadım.
nonce = 3000

baseString = f"{self.publicKey}{nonce}".encode("utf-8")
signature = hmac.new(
 base64.b64decode(self.privateKey), baseString, hashlib.sha256
).digest()
signature = base64.b64encode(signature).decode("utf-8")
timestamp = round(time.time() * 1000)
# HMAC mesajını hazırlayın
hmacMessageObject = [
 114,
 {
 "nonce": nonce,
 "publicKey": self.publicKey,
 "signature": signature,
 "timestamp": timestamp,
 "type": 114,
 },
]
self.ws.send(json.dumps(hmacMessageObject))
nonce değerini 3000 girince başarılı oldu ancak nonce = round(time.time() * 1000) girince olmadı.

Nedir bu nonce değeri neye göre girilmelidir.
Nonce 3000 iken gelen response message = None Başarılı
nonce = round(time.time() * 1000) iken gelen message 'message': 'Unauthorized - Invalid Request'}] Başarısız

@akrepfatih
Copy link

akrepfatih commented Oct 20, 2024

ChatGPT nin verdiği cevap:

Nonce (number used once), genellikle kripto para borsaları ve API'lerde güvenlik amacıyla kullanılan bir terimdir. Aşağıda nonce değerinin ne işe yaradığını ve neden önemli olduğunu açıklıyorum:

Nonce'in Önemi
Tekrar Edilmeyen Sayılar: Nonce, her istekte bir kez kullanılan benzersiz bir değerdir. Bu, aynı isteğin birden fazla kez gönderilmesini engeller. Örneğin, bir para transferi işlemi gerçekleştirirken aynı işlemin birden fazla kez yapılmasını önler.

Güvenlik: Nonce kullanımı, replay attack (yeniden oynatma saldırısı) gibi güvenlik açıklarını azaltır. Eğer bir saldırgan, daha önce yapılmış bir isteği tekrar ederse, nonce değeri sayesinde sistem bu isteği reddeder.

Zaman Damgası: Genellikle nonce, işlemin yapıldığı sıradaki zaman bilgisiyle de ilişkilendirilir. Bu, işlemlerin zaman sırasını korumaya yardımcı olur.

WebSocket Kullanımında Nonce
WebSocket bağlantılarında nonce kullanmak, her isteğin benzersizliğini sağlamak için gereklidir. Özellikle, kullanıcıların kimlik doğrulama işlemlerinde ve güvenlik gereksinimlerinde bu tür bir mekanizma önemli hale gelir.

Örnek Kullanım
Bir API isteği yaparken, genellikle nonce değeri şu şekilde oluşturulabilir:

Artan Sayı: Her istekte bir artan sayı kullanabilirsiniz. Bu, her isteğin benzersiz olmasını sağlar.
Zaman Damgası: İsteğin yapıldığı zamanı (milisaniye cinsinden) kullanmak da yaygın bir yöntemdir.
Özetle, nonce değeri, API isteklerinin güvenli ve benzersiz bir şekilde işlenmesine yardımcı olan önemli bir unsurdur. Eğer bir WebSocket API'sinde nonce değeri istiyorlarsa, her istekte bu değeri uygun bir şekilde oluşturup göndermelisiniz.


Tam emin değilim ama.
Server a istek senin zamanın + nonce değerinden geç giderse istek iptal oluyor.
nonce = 3000
timestamp 1729386675139 + nonce = 1729386678139 server zamanı bu zamandan büyük ise bu isteğini kabul etmeyecektir.
3000 de çalışıp 1000 de çalışmamasının sebebi bundandır. Sanırım evden Btcturk server ına ulaşmaya çalışıyorsun bu süre 1000ms den fazla sürüyor. #589 burada ki kişide sunucu zamanı değiştiği için hata almış.
https://api.btcturk.com/api/v2/server/time api sinden Bilgisayarın ile Btcturk server ı arasındaki farkı öğrenebilirsin.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants