0

いくつかのユーザー アカウント (Cookie なし、php セッション システム) で基本的な Web サイトを実行しています。ユーザーが生成したデータを自分だけに保存​​したいと思います。

今のところ、すべてのユーザーからのデータを 1 つのテーブルに格納し、識別用の列を追加します (これは、php セッションのユーザー ID からの入力です)。(ユーザーあたり最大 50 ~ 100 個のキーについて話しています)。

データ要求では、mysql クエリに追加のパラメーター (AND "user-id"=x) があります。

  1. これはデータを保存する安全な方法ですか (サイトに機密データはありませんが、アカウントは非公開にする必要があります)。

  2. これを処理するより良い方法はありますか?(私は別のデータベースなどについて読みました)もしそうなら、どのように?

どうも、

M.

4

3 に答える 3

2

これはデータを保存する安全な方法ですか (サイトに機密データはありませんが、アカウントは非公開にする必要があります)。

user-id=xテーブルからデータを取得するために mysql クエリを使用しても問題はありません。ただし、適切なサニタイズとクリーニングを行わずに、クエリ文字列からこの値を直接読み取ったり、mysql クエリに追加したりしていないことを確認してください。そうしないと、SQL インジェクションの犠牲者になります。

これを処理するより良い方法はありますか?(私は別のデータベースなどについて読みました)もしそうなら、どのように?

これを処理するために別のデータベースを用意する理由はわかりません。現在のデータベースを使用できます。必要に応じて、このために追加のテーブルを作成できます。あなたのデータベーススキーマとエンティティの関係が何であるかわかりません。だから私はあなたにそれを行う方法を教える立場にありません. テーブルを調べて、正規化されていることを確認してください。

保存されたデータをその特定のユーザーだけが見られるようにしたい場合は、おそらく現在ログインしているユーザー ID (セッション変数から取得しますか?) が db レコードの userId と同じかどうかを確認する必要があります。「CreatedById」フィールドの値がある場合は、それと比較できるかもしれません。

「SQL インジェクション」が新しい用語である場合、このリンクは必読だと思います。 http://www.unixwiz.net/techtips/sql-injection.html

于 2012-04-21T15:43:41.557 に答える
0

PHPを使用するだけ$SESSIONです。

を使用session_set_save_handlerすることで、独自のセッションストレージメソッドを定義できます。たとえば、MySQLデータベースなどです。

セッションの値は、ユーザーが直接変更することはできません(Cookieの場合と同様)。PHPSESSIDしたがって、 Cookieの値をどこにも公開しない限り、このアプローチは完全に安全です。

于 2012-04-21T15:36:24.047 に答える
0

100%安全な方法はありません。あなたの方法は非常に安全ではないように思えますが、あなたのコードを見ることができません。mysql インジェクションを回避するために入力を正しくクリーニングしていて、ユーザーが別のユーザーのキーを指定する方法がない場合は、問題ない可能性があります。

于 2012-04-21T15:37:58.663 に答える