2011-07-13 9 views
1

私は非常に単純な1階層のコメントシステムで、Jquery/Ajax/PHP/MYSQLを使って作業しています。ページには、最初にメインのコメントが表示され、ユーザーはそのコメントを投稿できます。MYSQL文でdiv idのデータを使用するのは安全ですか?

<div id="com100">Parent Comment</div> 

Iは、それぞれ対応する応答のためにMYSQLINSERT文で親IDとして、com100、親コメントのdiv id値を使用するように助言されました。

私の質問:これは安全ですか?任意のユーザーがdiv's id値を変更できないのですか?間違ったコメントに関連付けられた返信を潜在的に挿入するか、それとも悪化するか?

データが検証され、bindParamが使用されています。私は、間違った親コメントの下に返される返信にもっと関心があります。アドバイスをいただければ幸いです。

+0

はい、「id」値はどのユーザーでも変更できます。少なくとも、私はFirebug Firefoxでそれを行うことができます。だからそれを試してはいけません。 – afaolek

+0

そう思った。ありがとうafaolek – m14Grl

答えて

6

主な質問は、本当にです。 div IDがバックエンドに渡されます。おそらく、使用している技術では、Javascript/jQueryを使用してIDを取得し、標準のPOSTリクエストを使用してサーバーに送信します。この場合、POST要求は脆弱です。誰かがあなたのコードを読んで、そのデータがどのようにサーバーにPOSTされているのかを見てから、別のIDで同じ呼び出しを偽造することができます。

これまでのところ、クライアント側では、DIVのIDに頼っていても問題ありません。jQueryを使用して検証せずに取得することができます。そうです。 IDの検証は、POSTが入った後にサーバー側で行う必要があります。IDは意味がありますか?そのコメントは存在しますか?認証されたユーザーは、その親IDなどの下にコメントを投稿することができますか?

これで、ドキュメント内のDIV IDを変更する人は心配しないでください。とにかく偽のPOST要求で。しかしを行うPOSTが入って来たら、あなたのデータサーバー側の検証。

を攻撃者が任意の使用に持っていないとして基本的に、あなたがクライアント側でどのくらいの検証問題ではありません。 コードを使用してPOSTリクエストを偽装します。彼らはあなたがPOSTしているURLとPOST変数の名前を知る必要があります。POST変数は、コードを読んだり、有効なPOST要求を単にインターセプトしたりすることで、いつでも簡単に利用できます。クライアント側で真のユーザー間違いや自分のコードで間違っていることを検証することはできますが、サーバー側でセキュリティとデータの整合性を検証する必要があります。

+0

優れた答え。ありがとうございました。データ検証は既に実装されていますが、POST要求を保護していません。どのように今すぐ学習を開始するつもりです。 P.S.私はまたあなたの他のコメントが好きです。 – m14Grl

4

は安全ですか?

安全なものに依存します。

あなたは決してユーザー入力を信頼することはできません。ユーザーはいつでも「親コメント」の値を変更できます。

ユーザーは、その親コメント付きのコメントをサーバー側に投稿できるようにする必要があります。

+0

-1。 div idはユーザー入力ではありません。 – EJP

+0

@EJP、私が理解したところから、opはdivのIDから親コメントのIDを抽出しています。 – Dogbert

+0

はい。これは、ユーザーではなく、HTMLレンダリング・メカニズムによって定義されます。 – EJP

2

表示属性とデータベース属性を混在させることは非常に馬鹿げた考えです。彼らがいつも同期しているという保証はありません。

+0

Stack Overflowでここでクリックしたこの「Add Comment」ボックスのIDは、「comments-link-6677324」です。これはAjaxリクエストをバックエンドに送って答えにコメントを追加するために使用されますそのデータベースID。ただの観測! –

関連する問題