Merhaba,
Hem müşterilerimi yönetmek hem de projelerimi korumak amacıyla bir lisans sistemi yapma sürecindeyim; ancak birkaç sorum var.
Öncelikle, TypeScript kullanıyorum ve başlangıç/orta seviyedeyim. Bu gibi projeleri, kendimi geliştirmek ve kullanmak amacıyla yapıyorum.
Şimdi aklımda, WebSocket'e bağlanıp oradan userKey ile success ve licenseEndDate döndürmek var; burada bir sorun yok.
Ancak, bir lisansı yalnızca 1 PC kullanabilsin istiyorum, fakat bunu nasıl yapacağımı tam olarak kavrayabilmiş değilim.
Şöyle bir şey düşündüm:
Lisans kayıtta sistem otomatik olarak PC’nin bilgilerini (işletim sistemi, CPU, GPU gibi değişmeyen sabit veriler) toplayarak bir format haline getirip MD5 ile token yaparak kendim bir kimlik belirleyici (identifier) oluşturmak istedim. Ancak, daha başka ve kolay bir yol var mıdır ya da nasıl bir yol izlemeliyim? Yardımcı olabilirseniz sevinirim.
Yapacağım lisans sistemi için yardım
1
●168
- 08-11-2024, 00:46:27Bu tür bir lisans sistemi oluşturmak için
UUID veya Hash Üretimi: MD5 yerine SHA-256 gibi daha güvenli bir hash fonksiyonu kullanabilirsin
Donanım Bilgileriyle Kombinasyon: Lisans sistemini daha esnek hale getirmek için yalnızca birkaç sabit donanım bilgisini kullan
WebSocket Üzerinden Kısa Süreli Doğrulama: Kullanıcı giriş yaptığında sisteminiz WebSocket üzerinden donanım bilgilerini doğrulayarak lisans sürecini başlatabilirsin
Cihaz Kimliği Saklama ve Doğrulama: İlk lisans aktivasyonunda cihaz bilgilerini (örn. hash edilmiş kimlik) sunucuda saklayarak yalnızca kayıtlı cihazdan erişim sağlanmasına izin verirsin
Basit bir Örnek :
1. İstemci Tarafı (TypeScript)
import * as crypto from 'crypto'; // Donanım bilgileri oluşturma (örneğin CPU veya OS bilgisi) // Bu örnek sadece `hostname` kullanıyor; bunu geliştirerek daha fazla bilgi ekleyebilirsiniz. const getDeviceIdentifier = (): string => { const hostname = require("os").hostname(); // hostname gibi benzersiz bir veri alınabilir. const platform = require("os").platform(); const uniqueString = `${hostname}-${platform}`; // SHA-256 hash ile benzersiz bir cihaz kimliği oluşturuyoruz const hash = crypto.createHash('sha256').update(uniqueString).digest('hex'); return hash; }; const deviceIdentifier = getDeviceIdentifier(); console.log("Cihaz Kimliği:", deviceIdentifier); // WebSocket ile Sunucuya Gönder import * as WebSocket from 'ws'; const ws = new WebSocket('ws://localhost:8080'); ws.on('open', function open() { ws.send(JSON.stringify({ userKey: 'kullanici_anahtari', deviceIdentifier: deviceIdentifier })); }); ws.on('message', function message(data) { console.log('Sunucudan gelen:', data.toString()); });2. Sunucu Tarafı (Node.js ve WebSocket)
import * as WebSocket from 'ws'; // Örnek bir cihaz veri tabanı (Gerçek uygulamada bunu bir veritabanına kaydedin) const registeredDevices: { [userKey: string]: string } = {}; // WebSocket sunucusu oluştur const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', (ws) => { ws.on('message', (message) => { const data = JSON.parse(message.toString()); const { userKey, deviceIdentifier } = data; // Kullanıcı için daha önce kayıtlı bir cihaz var mı? if (registeredDevices[userKey] && registeredDevices[userKey] !== deviceIdentifier) { ws.send("Bu lisans başka bir cihazda kullanılıyor."); ws.close(); } else { // Kullanıcının cihazını kaydedin registeredDevices[userKey] = deviceIdentifier; ws.send("Lisans doğrulandı."); } }); }); console.log("WebSocket sunucu 8080 portunda çalışıyor.");Bu temel örnek, cihaz başına bir lisans kısıtlaması getirmeni sağlar Veritabanında daha detaylı donanım bilgileri ile güvenli bir hale getirebilirsin
örneği chatgpt yazdırdım hatalı olabilir kontrol etmedim ama temel mantık bu şekilde hocam umarım yardımcı olabilmişimdir iyi formlar