Php url şifreleme nasıl yapılır?
17
●428
- 09-05-2024, 13:34:44Merhaba arkadaşlar PHP ile bir site hazırlıyorum formdan get metoduyla veri gönderiyorum. Gönderdiğim sorgu ve değer adres çubuğunda görünüyor. Adres çubuğunda şifreleme yapmak istiyorum. Url şifreleme ile ilgili ne yapılır genel itibariyle.
- 09-05-2024, 13:39:30Aşağıdaki kod yapısını inceleyebilirsiniz.
<?php function encryptData($data, $key) { $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv); return base64_encode($encrypted . '::' . $iv); } function decryptData($data, $key) { list($encryptedData, $iv) = explode('::', base64_decode($data), 2); return openssl_decrypt($encryptedData, 'aes-256-cbc', $key, 0, $iv); } $key = 'bu_gizli_bir_anahtar'; $encryptedData = encryptData($_POST['data'], $key); echo '<a href="site.com?data=' . urlencode($encryptedData) . '">Gizli Veri</a>'; $decryptedData = decryptData($_GET['data'], $key); echo 'Çözülmüş Veri: ' . $decryptedData; ?>
- 09-05-2024, 13:39:50Güvenlikli bir şifreleme için rijndal ile istek gövdesini belirli bir key ile şifreleyebilir ve içerde o key'i alarak paketi açabilirsin.
Veya basit bir şifreleme için base64 kullanabilirsin.
Ancak paketleri niye şifrelemek istiyorsun orası muallak, zaten gönderilen paketi metot farketmeden birden fazla yol izleyerek görüntüleyebilirsin. - 09-05-2024, 14:03:55MythDev adlı üyeden alıntı: mesajı görüntüle
Form da neden get kullanıyorsun?
Doğru olan post işlemidir form için. - 09-05-2024, 18:05:37Arkadaş get metodu ile url üzerinden gönderdiği verileri şifrelemek istediğini ve yönteminin nasıl olduğunu sormuş, post metodunu kullanın demek doğru cevap olmuyor maalesef. Bazı durumlarda get metodu da kullanmak gerekebiliyor. Ayrıca PDO'nun konu ile doğrudan ilgisi yok. Veriyi dosyaya da kaydediyor olabilir ya da sadece hesaplama yapıyor da olabilir.
Sevgili @taylanweb; doğru cevabı vermiş. Burada önemli olan iki yönlü şifreleme kullanmak, ve gizli bir anahtar (salt) kullanmak. URL üzerinden gelen verinin sadece sizin kodunuzda anlamlı olması, tek başına bir şey ifade etmemesi gerekir.
MythDev adlı üyeden alıntı: mesajı görüntülentka adlı üyeden alıntı: mesajı görüntüle - 09-05-2024, 18:13:07
// Formdan alınan veri $data = "Bu bir örnek veridir!"; // Veriyi AES algoritmasıyla şifrele $encrypted_data = openssl_encrypt($data, "AES-128-ECB", "şifreleme_anahtarı"); // URL'yi oluştur $url = "example.com?data=" . urlencode($encrypted_data); // Oluşturulan URL'yi göster echo $url;
Çözmek için ters işlem.
// URL'den şifreli veriyi al $encrypted_data = $_GET['data']; // AES algoritmasıyla şifre çözme $decrypted_data = openssl_decrypt(urldecode($encrypted_data), "AES-128-ECB", "şifreleme_anahtarı"); // Şifrelenmiş veriyi göster echo "Şifrelenmiş Veri: " . $encrypted_data . "<br>"; // Orijinal veriyi göster echo "Orijinal Veri: " . $decrypted_data;
@fatihemre; teşekkürler.
hesaplama yapsada post göndermesi daha mantıklı get ile url ye pek gerek duyulmuyor. - 10-05-2024, 01:02:51Arkadaşlar cevaplar için teşekkür ediyorum. Öncelikle "openssl_encrypt" kullanımında, adres çubuğunda "artı" yani "+" işareti olunca şifreyi alamıyordum. Yani bu "openssl_encrypt" şifrelemesinde boşluk işareti geleceğinde "+" işareti koyuyor ve ben o şifreyi alamıyordum. O yüzden kullanmadım.
Bir diğeri ise bir get metoduyla gönderdiğim bir formdan üç farklı işlem yaptırıyorum. Eğer 1. input'un değeri boş değilse o değer ile arama işlemi sonucu bir sayfaya gidiyor. Eğer boş ise veri bulunamadı yazıyor. Eğer 2., 3. 4. input boş değilse bu değerleri alıyordum, arama sonucu olarak başka bir sayfaya gidip hem listeleme hem de sayfalama yapıyordum. Post'a çevirince listeleme yapabiliyorum ilk sayfada ama diğer sayfalar için sayfalama ve listeleme yapamıyorum.