2009-05-13 23 views
2

私はこれを参考にしてこのJQuery Ajax Voting system guideを使用していますが、私はこれのセキュリティに少し問題があります。現在、このガイドには基本的に何かのIDと投票統計が格納されています。JQuery Ajax投票

私は同様の考え方にしたいと思いますが、userIDも含めてユーザーが一度だけ投票できるようにする必要があります。これはPHPセッション変数に格納されており、呼び出されるajaxページにそのセッションへのアクセス権があるかどうか疑問に思っていました。そうでない場合は、パラメータを渡す安全な方法は何であり、中間の攻撃の人間によってハイジャックされたり、偽造されたりすることはありません。

+0

ちょうど同じチュートリアルを読んだ後、Google検索でこれを見つけました! - 良い質問、+1 :)私は非常に似て投票システムを作っている。 –

+0

@Tim Postあなたが役に立ったことを嬉しく思って:) –

答えて

3

スクリプトは、スクリプトの先頭にsession_start();を付けている限り、AJAX呼び出しによってセッションデータにアクセスできます。チュートリアルではデータをmysql_real_escape_stringに渡さずにクエリを実行していることがわかるので、データを確実に消毒する必要があります。また、投票表にUNIQUE KEY(user_id, id)を入れて、重複がないことを確認する必要があります。

+0

私は実際にはパラメータ化されたクエリを使用することになるので、mysqlライブラリの代わりにPDOを使用しています。また、(user_id、id)にもユニークな複合キーが設定されています。私はそれをカバーすべきだと思いますよね? –

+0

あなたは行くのが良いです。 –

1

実際にユーザー投票を格納するハンドラから同じSession変数を取得できるはずです。

セキュリティの基本的な対策として、AJAX呼び出しの前に投票でUserIdをencrpytし、セッションで使用できない場合に挿入を実行するときにUserIdを復号化することができます。