• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:掲示板ユーザのアクセス権)

掲示板ユーザのアクセス権

このQ&Aのポイント
  • PHP+MySQLで作る掲示板のプログラムを学んでいます。MySQLのテーブルには会員一覧のテーブル member と書込記事用テーブル comment があります。会員テーブルに登録したユーザが、コメントテーブルにアクセスするための権限を設定する方法について教えてください。
  • 会員一人ひとりについてDB接続文とテーブル操作のgrant文を使用して個別にアクセス権を設定すれば良いのでしょうか?また、登録したユーザに自動的にアクセス権を付与する方法はありますか?掲示板を実際に運用している場合、どのようにアクセス権の管理を行っているのか教えてください。
  • 参考書を探してもアクセス権の管理に関する詳しい説明が見つからなかったため、質問させていただきました。お手数をおかけしますが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1さんの回答通りなのですが、もう少し噛み砕いて書きます。 MySQLへのアクセスはすべてPHPを実行しているソフトウェアの権限で行うのが普通です。よって、誰に読み書きの権限を与えるかというのはすべてプログラムが読めるデータベース上に置いてあり、プログラムの中でそれを元に表示をしたり、アクセス禁止を伝えたりすると思います。 当然、ログインに使うパスワードなどもDB上に置きますが、通常は暗号強度のあるハッシュ関数を通したハッシュ値を置くと思います。ナイーブに作るとアタックの時の探索空間が狭くなるので、ランダムな値をsaltとしてつけて計算するのが普通です。自分だったらCRYPT_SHA256が使えるならそれで計算しますね。DESやMD5は今や昔という感じがしますし。 http://www.php.net/manual/ja/function.crypt.php この場合の実装では、member、commentの他に最低でもgroupというテーブルとaccess_control_listというテーブルがあったほうが良いでしょう。groupというテーブルではどのメンバーがどのグループに属しているかを示し、access_control_listではどのグループがどのcommentを読めるかを示します。コメントを書くときにどのgroupに見せるかを設定すると自動的にaccess control listが設定されます。また、別のところでgroupの追加・削除もできるようにします。利便性を考えるとグループ名のテーブルも作り、UIではグループ名を見せるようにしたほうがいいですね。

spindle
質問者

お礼

すみません、補足の補足です。 >コメントを書くときにどのgroupに見せるかを設定すると自動的にaccess control listが設定されます。また、別のところでgroupの追加・削除もできるようにします の箇所について、有益な参考書かサイトURL をご紹介願えると有難いです。

spindle
質問者

補足

ご回答ありがとうございます。私にとってはやや難しい話ですが、お陰様で、少し分かりかけてきた気がします。 理解を深めるために、アクセス権付与についての実装時の例文(スクリプト)を少し示して頂けると有り難いですが・・・。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

MySQLへのアクセスは(ログインした会員の権限とは無関係に)phpスクリプトで設定したユーザでアクセスします。ログインした会員の権限によって、phpスクリプトでどういう処理を選択可能にするかが違ってくるだけです。 レンタルサーバなどではユーザの追加自体が出来なかったりもします。あくまでも一定の権限を持ったひとつのユーザで(phpスクリプトは)処理します。

spindle
質問者

お礼

ご回答ありがとうございます。なるほど、基本的なことは理解できました。もう少し勉強します。