2016-04-07 12 views
0

PHP kullanarak basit bir sohbet oluşturmaya çalışıyorum. Her şey beklendiği gibi çalışıyor, ancak potansiyel bir “istismar” ile karşılaştı. Tüm sohbet verilerini almak için bir AJAX kullanıyorum (Facebook, Twitter vb. Gibi). Şimdi sorun geliyor: Şu anda sohbet kimliğini dinamik olarak oluşturulmuş div içerisinde saklıyorum. Örneğin" içinPHP Chat - id html5 içinde depolama?

<div class="chat" chat_id="4"> 
    .... 
</div> 

biri herhangi girilen metin veritabanı içinde hatalı id altında depolanacak neden olacak tarayıcı üzerinden chat_id değiştirmek mümkün olacaktır. Bunu önlemek için en iyi yolu ne olurdu?

. Bu sohbet kimliği geçerli olduğundan emin olmak için, doğrulama amacıyla temelde ben şu anda tüm alınan/başlattığı sohbet ayrıntıları (gönderen, id sohbet) $ _SESSION değişken içinde saklandığı bir yöntem düşündüm

olduğunu Geçerli kullanıcı için

Bunu yapmanın daha iyi bir yolu var mı? Teşekkür ederim.

+1

Neden 'chat_id' attr olurdu bir örnek? – user3284463

+3

Ayrıca ajax çağrılarını değiştirebilirler. Kullanıcıları bunu neden engellemelisiniz? Başka bir sohbette yazmak isterlerse (erişebildikleri) neden onlara izin vermezler? Bunu neden js olarak ayarlamasın ki? Yine de güvende olmaz - müşteri çağrıları/verileri yoktur. Müşteri, tanımlayarak/göndererek/aldıklarıyla ilgili her şeyi değiştirebilir. – h2ooooooo

+2

Sohbet kimliğini oturumda saklarsanız, mesajları alırken kullanıcıyı kontrol edebilirsiniz. Kullanıcı oturumda bu sohbet kimliğine sahip değilse, hiçbir şey yapmayın. Bir not olarak, 'chat_id =" "' özniteliğini 'data-chat-id =" "' özniteliğiyle değiştirmeyi öneriyorum. '-' ve' data- * ' –

cevap

-1

Burada şifreleme yararlanabilir, burada 128 bit Rijndael encyrption

<?php 
/* 
creating cipher object using Rijndael encyrption algorithm with Cipher-block chaining (CBC) as mode of AES encryption 
Here I have chosen 128 bit Rijndael encyrption 
*/ 
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); 

$key = 'abcdefghijklmnopqrstuvwxyzABCDEF'; // choose a strong iv (32 bytes) 

$iv = 'abcdefghijklmnop'; // choose a strong iv (16 bytes) 

$plainText = 'This is plain text.'; //here you can use your "id" that you want to encrypt 

function encrypt($data, $key, $iv) { 
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv)); 
} 

function decrypt($data,$key,$iv) { 
    return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, $iv); 
} 
echo $ciphertext = encrypt($plainText, $key, $iv); 
echo "<br>"; 
echo $plaintext = decrypt($ciphertext, $key, $iv); 
İlgili konular