TheKhan adlı üyeden alıntı:
mesajı görüntüle
Php Script Şifreleme Lisanslama Tavsiyeleri
19
●803
- 26-11-2021, 12:01:44Kimlik doğrulama veya yönetimden onay bekliyor.Hosting konusunda size uyguna yardimci olabilirim PM atabilirsiniz.buddy adlı üyeden alıntı: mesajı görüntüle
- 26-11-2021, 14:08:01Şifreleme algoritmalarından ziyade uygulamayı dışa bağımlı tutmak. genelde 7/24 up olan bir sistem bekler.buddy adlı üyeden alıntı: mesajı görüntüle
Örn.
islem adında bir fonksiyonun olsun. bu fonksiyonun bulunduğu dosyayı kriptoladığında bir şekilde kırıldığında kaynak kodunu görebiliyorlar.
fakat bu tarz dosyalarını scriptten tamamen ayırıp ayrı bir yerde host edip ana scriptten gerekli lisans, header vb. bilgileri alarak istek atıp o fonksiyonun yapacağı işlemi kendi sunucunda işletip dönersen herhangi bir kriptolamaya ihtiyacın olmaz.
çünkü kendi sunucunda her zaman lisans vb. olayları kontrol etmiş olacaksın.
o fonskiyonun karmaşık bir fonksiyon olduğunu varsayalım veya o fonksiyona ait başka bağımlılıklarında olduğnu varsayalım bu şekilde ana script onları bilmeyecek sadece şu işlemi yap diyip sonuç bekleyecek
gelen sonuca göre ana scriptin işlemlerine devam edebilir yada o sonuç gelmezse edemez. ve bu şekilde kırmak isteyen kişi o fonksiyonun bağımlılıklarını bilmeyecek sadece tahmin edebilecek. tahmin ederekte yazmak zaten zor olur
o fonksiyonun kaynak kodları her zaman senin elinde olmuş olacak. tek bir yerde
en basit haliyle aslında böyle bir şey. bunu ne kadar karmaşık hale getirirsen o kadar zor çözülür. kırmak isteyen kişi o konuda uzman olmak zorunda kalır. o fonksiyonun tam olarak ne iş yaptığını deneyerek tahmin ederek bulmaya çalışır. - 26-11-2021, 14:55:58Host konusunda fikir beyan etmem yanlış olur. Sonuçta forumda bir sürü host sağlayıcı var. Ayrıca bu sizin projenizin kapsamı ve boyutuna göre değişiklik gösterecektir.buddy adlı üyeden alıntı: mesajı görüntüle
Başka bir yöntem geldi aklıma. php.ini içerisinde bulunan include_path parametresinide kullanabilirsiniz.
Örneğin root yetkisi sizde olan ancak müşteriye kullanıcı yetkisi verdiğiniz bir sunucu olsun, (neden verirsiniz bilmiyorum)
Bu sunucuda normal kullanıcının okuyamayacağı bir klasöre yazdığınız sistem tarafından kullanılacak dosyaları atıp, php ayar dosyasında bulunan include_path parametresine bu klasör adresini ekleyin. "include" fonksyonu bu klasöre de bakıp sizin gizlediğiniz dosyaları include edecektir. Kritik fonksyonları bu şekilde nispeten gizleyebilirsiniz.
Çok kullanılan bir yöntem değildir, ama bayağı kafa karıştıracağını düşünüyorum. - 26-11-2021, 15:24:07Hocam başka hosttan örneğin fonksiyon php dosyasını çekmekten bahsediyorsunuz sanırım. Bildiğim kadarıyla uzaktan çekilen php dosyasınının kaynağını değil çeksek bile çıktısını alabiliyoruz. ve güvenli olmadığını biliyorum. Dediğiniz başka nasıl yapılabilir?
Polat adlı üyeden alıntı: mesajı görüntüle - 26-11-2021, 15:27:40php dosyası uzaktan çekilmeyecek hocam. uzaktan belirtilen parametrelere göre çalıştırılıp sadece sonuç döndürülecek zaten sizin scriptinizdeki işlemler basit ise tahmin edilmesi kolay olur. benim yaptığım işlemler karmaşık olduğu için ve sadece tek bir yer için yapmadığım için henüz kırılmadı. denenip denenmediği hakkında da bir fikrim yok ki zaten ip bazlı request limiti de mevcut. kuracağın yapıya göre bunu şekillendirmen gerekiyor.buddy adlı üyeden alıntı: mesajı görüntüle
eğer basit düzeyde bir script yapıyorsan zaten söylediğim yöntem işine yaramaz
- 26-11-2021, 15:36:11Ben PHP ile uğraştığım zamanlarda https://codecanyon.net/item/php-enco...cator/12925043 bunu kullanıyordum. Sizin için basit bir örnek yaptım belki işinize yarar diye
Orjinal kod
try { global $db; $db = new PDO("mysql:host=" . $config['panel_ip'] . ";dbname=" . $config['panel_dbname'], $config['panel_user'], $config['panel_pass']); } catch (PDOException $e) { print $e->getMessage(); }Şifrelenmiş hali
<?php /* Do not change this code, or your script will not work. Checksum: c9f0f895fb98ab9159f51fd0297e236d */ eval(base64_decode("JE8wTzBPMDBPME89ZmlsZShwcmVnX3JlcGxhY2UoIkBcKC4qXCguKiRAIiwiIixfX0ZJTEVfXykpOwppZihwcmVnX3JlcGxhY2UoIkBcKC4qXCguKiRAIiwiIixfX0ZJTEVfXyk9PV9fRklMRV9fIG9yCnByZWdfcmVwbGFjZSgiQFwoLipcKC4qJEAiLCIiLF9fTElORV9fKSAhPSAzKWRpZSgiPHR0PkVSUk9SIik7"));eval(base64_decode("ZnVuY3Rpb24gSUkxMWxJSTExMSgkYSwkYil7JGM9YXJyYXkoOTcwLDMyNCwzMiwyMDIpOyRrPWd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKCJLeXJOVGNvc0tRWUEiKSk7JE8wTzA9JGtbNl0uJGtbMV0uJGtbM10uJGtbNl0uJGtbNV0uJGtbMF07JE8wPSIka1s1XSRrWzBdJGtbNF0ka1syXSI7aWYoJGI9PTIwKXskZD0kTzBPMCgkYSwkY1swXSskY1sxXSwkY1syXSk7fWVsc2VpZigkYj09NzMpeyRkPSRPME8wKCRhLCRjWzBdLCRjWzFdKTt9ZWxzZWlmKCRiPT03OSl7JGQ9JE8wKCRPME8wKCRhLCRjWzBdKyRjWzFdKyRjWzJdKSk7fXJldHVybiRkO30="));eval(base64_decode(II11lII111($O0O0O00O0O[0],73)));eval(Il11lI1lI1(II11lII111($O0O0O00O0O[0],79),II11lII111($O0O0O00O0O[0],20),$O0O0O00O0O));__halt_compiler();8aWYoIWZ1bmN0aW9uX2V4aXN0cygiSWwxMWxJMWxJMSIpKXtmdW5jdGlvbiBJbDExbEkxbEkxKCRhLCRiLCRjKXskZD1pbXBsb2RlKCRjKTskZD1wcmVnX3JlcGxhY2UoIi9fX2hhbHRfY29tcGlsZXIuKi8iLCIiLCRkKTtpZigkYj09aGFzaCgibWQ1IiwiJGQiKSl7cmV0dXJuKGd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKCRhKSkpO31lbHNle2RpZSgiPHR0Pm1kNSBDb2RlIG1hbmlwdWxhdGlvbiBkZXRlY3RlZDwvdHQ+Iik7fX19c3c687a2a2d5ba05eebacbd12d47e3c3bY5BCsIwEEX3gncYSiEpqAew1FVdiu6lSJKOaSBNYieiRby7weJGOqvP+3/gxWGE13IB6bT1UljIW1lOICWowOEDTvWRZ/1IN7vtPMUqgw3kyrur0WcWhEN7MYE1iWZlK53ocW4yNaxZ/Rd3wmEGB0HEmiLZvEGJqDrgSWT/VBii8Q5yLH7uYTAuJrDeaYwHJBIa+ffzAw - 26-11-2021, 15:57:02Hm bu mantıklı geldi hocam parametreyi uzaktan nasıl neyle alıyorsunuz ? Sadece parametre alıyorum dediğiniz yer için küçük bir örnek yazabilir misiniz?
Polat adlı üyeden alıntı: mesajı görüntüle - 26-11-2021, 16:07:31yani basit örnek vermek biraz işi anlamanızda yardımcı olmayabilir ama şöyle bir örnek vereyim.buddy adlı üyeden alıntı: mesajı görüntüle
function encryptPassword( $password, $publicKeyId, $publicKey) { $key = openssl_random_pseudo_bytes(32); $iv = openssl_random_pseudo_bytes(12); $time = time(); openssl_public_encrypt($key, $encryptedAesKey, base64_decode($publicKey)); $encrypted = openssl_encrypt($password, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag, strval($time)); $payload = base64_encode("\x01" | pack('n', intval($publicKeyId)) . $iv . pack('s', strlen($encryptedAesKey)) . $encryptedAesKey . $tag . $encrypted); return sprintf('#PWD_INSTAGRAM:4:%s:%s', $time, $payload); }yukarıdaki gibi bir fonksiyon olsun, instagram şifrelerinin hashlenmiş halini düşünelim.
bunu script içerisine koymak yerine uzak bir yere koyup return ile dönelim apiden.
ana scriptten bir post isteği ile post verileri şunlar olabilir.
->lisans anahtarı
->password
->publicKeyId
->publicKey
her seferinde bu istek sizin sitenizden geçmek zorunda. ve dönen sonuca göre de ana scriptiniz işlemine devam etmek durumunda. lisans zaten gelmek zorunda başta onu kontrol edebilirsin. varsa aktifse işlemi yapıp dönebilrisin.
burada sadece 1 fonksiyon var. bunu tahmin ederek yazması zor. bunu daha da karmaşıklaştırdığını ve birden fazla fonksiyon ve gereksinimli olduğu halini düşünün. tahmin edilip yazması zor.
zaten tahmin edip yazarsa yapacağın bir şey yok
ama en azından kaynak kodu şifrelenmiş bir halde bile teslim etmemiş olacaksın en azından oturup o kodları yazması gerekecek o çıktıya benzer çıktılar alabilmesi için.
bu fonksiyonda da zaten her gelecek olan request e göre farklı bir sonuç dönecek. yani birebir aynı sonucu döndürene kadar denemektense kırmayı denemezler bence.
bu fonk. tamamen bir örnek. bunu daha da karmaşıklaştırabilirsin. ama burada şöyle bir olay var. bu fonksiyonu çalıştıracağın host hiçbir zaman kapanmamalı ve yüksek requestlere dayanabilmeli. yoksa müşterilerin sitesi yavaş çalışabilir yada hiç çalışmayabilir
bu örneği kendi sistemine uygun şekilde ayarlayıp optimizeler yaparsan daha garanti ve güzel bir yol bana göre.

ama en azından kaynak kodu şifrelenmiş bir halde bile teslim etmemiş olacaksın en azından oturup o kodları yazması gerekecek o çıktıya benzer çıktılar alabilmesi için.