何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 37042
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

わんくま同盟大阪第3回勉強会で、データベースとのやりとりをストアド プロシージャで行っていました。このことについて、懇親会にて、「どうしてですか?」という質問がありました。これについて、私が思っていることを。

プログラム中に SQL を書くなら、プログラムを書く人が、SQL も知っていなければなりません。まぁ、たいてい、両方できるでしょうが。ところが、両方できるって、実は問題だと思いませんか?

普通のプロジェクトなら、コードを書く人が一人って、あり得ないと思います。複数の人がコードを書くなら、余計にストアド プロシージャにする方が良いと、思います。

わんくま同盟大阪第3回勉強会でも、一度ストアド プロシージャを作ってから、「アレが足りない、コレがない」という話が出てきました。まぁ、前準備が不十分だったということもあるとしても、抜けがありました。そうした抜けに対応するには、プログラム中に SQL を埋め込んだ方が早い??

ちょっと待ってください。取ってくるものに抜けがあったという話の中に、ビューの定義が変更されるというものがありました。

これを、誰かが勝手にやっちゃうと、他の人が迷惑しないでしょうか。

ストアド プロシージャを使うひとつの利点は、変更を全員が把握できる、または、データベースの変更をコードの実装から隠すことができるということです。

また、Web アプリケーションの場合、SQL インジェクションに対しては、強くなるでしょう。ストアド プロシージャを、文字列連結で作るという質問は、オンライン上で見た記憶がありません。しかし、パラメータが渡らないという質問は、何度か見た記憶があります。自然にパラメータ私を選ぶなら、SQL インジェクションに対して強い(完璧とはいわない)アプリケーションになることが期待できるでしょう。

私は、そういうプロジェクトの経験がないのでわかりませんが、人によってはデータベースの実装を、プログラマから隠したいという場合もあるようです。よくコメントを残してくださるがるさんからの情報ですが、Web アプリケーションで、type=hidden な input 要素にいろいろなテーブルの情報を埋め込むことができるようにして、「何でもできます」のようなコメントを入れていた人がいるとか。データベースの実装がプログラマから隠されていれば、こういう“とんでもないセキュリティ ホール”を作り込むこともできなかったでしょう。

こういう訳で、ストアド プロシージャを使用することを勧めます。

投稿日時 : 2006年10月8日 21:38
コメント
タイトル
名前
Url
コメント