2016-04-07 19 views
0

私はPHPを使って簡単なチャットを作成しようとしています。すべてが期待どおりに機能していますが、潜在的な「悪用」に遭遇しました。私はAJAXを使ってスクロールのすべてのチャット・データを取得しています(FacebookやTwitterなど)。今問題が発生します:私は現在、動的に作成されたdiv内にチャットIDを格納しています。たとえば」PHPチャット - html5にIDを格納していますか?

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

は、一つは、任意の入力されたテキストは、データベース内の不正なIDの下で保存される原因となるブラウザを介しchat_idを変更することができるだろう。これを防ぐ最良の方法だろうか?私は現在、全て取り出さ/開始チャットの詳細(送信者は、IDをチャット)する方法を考えている

$ _SESSION変数内に格納されている。これは、チャットIDが有効であることを保証するために、検証目的のために、基本的です現在のユーザーの場合

もっと良い方法がありますか?ありがとうございました。あなたは `chat_id` attrのを持っているでしょうなぜ

+1

の例ですか? – user3284463

+3

彼らはまた、彼らのajax呼び出しを修正することもできます。なぜあなたはこれをやらないようにブロックしますか?彼らが(彼らがアクセス権を持っている)別のチャットを書きたいのであれば、なぜそれらを放棄しないのですか?なぜあなたは単にこれをjsに設定しないのですか?クライアントの呼び出し/データはありませんが、それでも安全ではありません。クライアントは定義上、送信/受信/受信しているすべてのものを変更することができます。 – h2ooooooo

+2

チャットIDをセッションに保存すると、メッセージを取得するときにユーザーを確認できます。ユーザーがセッションでそのチャットIDを持っていない場合は、何も表示しないでください。ちなみに 'chat-id =" "属性を' data-chat-id = ""属性で変更することをお勧めします。 '-'と' data- * 'を使った良い実践 –

答えて

-1

あなたがここに暗号化を利用することができ、ここでは128ビットラインダール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); 
関連する問題