2012-02-10 5 views
0

高度な機能を備えたhtmlテーブルにデータを表示するためのjQueryプラグイン(jqgrid、DataTablesなど)がいくつかあります。ライブ編集機能を持つものは、テーブル自体にmysqlの行IDを格納します(そして編集不可能にする)か、ソースの行IDのようにします。ソースコードでMySQLの行IDを明らかにする:大丈夫か悪い?

私は、あなたのデータベース設計に関する何かを明らかにすることは悪い考えです。

ソースコードやテーブル自体にmysqlの行IDを明らかにするのは大したことですか?それは単にデータの感度に左右されますか?

javascriptにmysqlの行IDを持つhtmlテーブルの行IDと一致するハッシュテーブルを持つ方がよいでしょうか?

+0

プライマリキーをユーザーに公開することは一般的には困難です。依存するようになり、必要に応じて変更するのが難しくなります。セキュリティ上の問題でもあります - SQLインジェクションはもっと大きなダメージを与える可能性があります。 –

答えて

2

データモデルの "obscurity"に応じて、SQL Injectionのような問題からユーザーを保護することになると、あなたは非常に失望します。また、ユーザーが提供している健全性検査値(たとえば、更新するためのROWID)でない場合は、アプリケーションに大きな穴ができます。これは、アプリケーション内のデータを識別するために使用するものとは独立しています。主キーは、一般に機密データではありません。

要するに、行IDを使用してアプリケーションからユーザーのデータを特定することは、あなたが必要とするようにユーザー入力を正当性を確認することを条件として問題ではありません。ユーザーが最も奇妙な場所にページをブックマークする傾向があるため、URLにIDを表示する場合は注意が必要です。それはあなたがそれをしたいと思っているようには聞こえません。関連する議論については、Should I obscure primary key values?を参照してください。

を参照してください。

+0

私はすべてのデータを試して消毒します(私は実際のエスケープ文字列を使用します)。 また、idはURLに含まれず、行のhtml IDになります。ブックマークの問題はそうではありません。 ありがとうございます。 – dewyze

1

あなたが述べたように、それはデータの感度に依存します。しかし、私はこのような状況のためにあなたのやり方を説明したいと思います。それがあなたに役立つかもしれません。

データベース表の行のIDをHTML表の行IDとして追加しました。誰かがそれを編集するとき。私は一度要求を受けるといくつかのことを調べました。

  1. このユーザーが
  2. 認証されている。このユーザーは、このモジュール
  3. の行を編集する権限を持っています。この選択された行は、このユーザーが編集することができますです。

2つのステップと3つのステップを組み合わせることもできます。より多くのセキュリティや監査が必要な場合は、ログを保持することもできます。

IDをエンコードして行IDとして設定することができます。編集要求を受け取ったら、それをデコードして取得することができます。

関連する問題