何となく Blog by Jitta
Microsoft .NET 考

目次

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

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

ネタもと:[ASP.NET2.0]コンテキストメニューの制御について
[ASP.NET 2.0]メッセージボックス表示の画面状態

> しかし、Web アプリケーションの場合、正規の手順で操作されることだけ考えていてはいけません。
もちろん考えております。なので、画面そのものをロックしてしまおうかと考えています。

ご指摘ありがとうございます。
その件に関しましては、開発当初から話題に上がっておりました。

対策を考えるとキリがありませんが、検討しております。
ポップアップで画面を起動し、コンテキストメニューを無効にするとか・・・

Web アプリケーションにおいては、ユーザの操作を制御することでシステムを悪意から守ることは出来ません。

質問者は、コンテキスト メニューを表示しないようにすることで、「ソースを表示」を出さないようにしようとしています。同じように、window.open のときに、メニューも隠しているのでしょう。

しかし、間違ってはいけません。“ユーザが操作を間違えることを予防すること”と、“悪意のデータからシステムを守ること”は、まったく別です。

コンテキスト メニューを消す。ポップアップ ウインドウにする。最初のボタンクリックの後にボタンを使用不可にする。これらは、Windows アプリケーションであれば、悪意からシステムを守ることにかなり有効です。しかし、Web アプリケーションにおいては、ユーザが操作を間違えることを予防するための措置でしかなく、悪意のデータからシステムを守るためには、まったく貧弱です。

Opera や FireFox では、スクリプトを有効にしながら、コンテキスト メニューを操作するスクリプトだけを無効にすることが出来ます。IE と同じレンダリング エンジンを用いるものでも、Lunascape などのタブ ブラウザであれば、メニューやアドレス バーを消したウインドウをポップアップさせることは出来ません。

ブラウザは、システム構築者が作るものではないのです。自分が作ったものではないアプリケーションを、完全に自分の意志に従わせることは出来ません。


悪意のデータからシステムを守るためには、サーバ側のロジックを悪意のデータが送られてくる前提で考える必要があります。“悪意のデータを入力させない”、すなわち、クライアント側のスクリプトで悪意のデータを入力させないようにすることは出来ません。

対策を考えるとキリがありませんが、検討しております。

“送らせない”ための対策を考えると、確かにキリがありません。しかし、“受け取ったときに弾く”ように考えれば、キリがあります。受け取ったところで、望んだ状態かどうか、チェックすればいいのです。(さらっと書いたけど、実際は難しい→じゃぁ、どうすりゃいいのさ


「自部署だけで使うものだからかまわない」、そういう返答をいただいたこともあります。しかし、せっかくの学ぶ機会を逸していいのでしょうか?次も、自部署だけで使うものを作るのでしょうか?次に、外部へ公開するものを作るとき、その時には対応しなければならないのです。その時に、もう一度考え直すのですか?それだったら、今、考えておきましょうよ。2回も考える必要はないでしょ?

投稿日時 : 2006年8月21日 21:39
コメント
  • # re: ユーザの操作を制御する/悪意のデータからシステムを守る
    買太郎
    Posted @ 2006/08/22 3:57
    初心者の頃には、そう言う発送に走りがちですね。(走ってたw)
    でも今では、クライアントを完全に制御なんて出来ないもんだと知り、ちゃんとサーバーを中心に考えるようにしてます。
    クライアントでする事は、使いやすく(間違った処理をしにくく)&ユーザーのレベルにあった制御を心がけています。

    でも、自部署(LAN内Onlyとかツール程度のシステム)の場合には、その実装をしない事としない意味をユーザー側の責任者に確認の上で工数を減らしたりすることは、有りかと思ってます。

    でも、自身のスキルでは、不特定多数の使うオープンなセキュリティを確保できるかと聞かれるとまだまだ不安です。
  • # re: ユーザの操作を制御する/悪意のデータからシステムを守る
    買太郎
    Posted @ 2006/08/22 3:58
    発送→発想でしたorz
  • # re: ユーザの操作を制御する/悪意のデータからシステムを守る
    ちゃっぴ
    Posted @ 2006/08/22 4:28
    そもそも、この手の問題って programming だけを
    議論しても全く意味無いでしょう。

    Client 端末の設計から見直さなければどうにも・・・

    当たり前ですが、security は特にあらゆることを
    総合的に評価して対策しなければならないんですから・・・
    # だから難しいし、大変なんですがね。

    > 「自部署だけで使うものだからかまわない」

    それの筆頭が password 埋め込み application なんですよ。
    # 某所でもまじめに OK だって意見している人いたし・・・
    # 脆弱性とその影響度を考えるとこれが一番あっては
    # ならないことなんですがね。
  • # re: ユーザの操作を制御する/悪意のデータからシステムを守る
    ちゃっぴ
    Posted @ 2006/08/22 5:08
    読み返してみると・・・
    これは完全に私の勘違いですね。
    あまりにも・・・

    とりあえず、開発者は script 無しで、secure な
    Web application を構築する方法を最初に叩き込むべきでは?
    って気がする・・・
    # そのためには実際に hack できるだけの技術をもった
    # 人が身近にいないと説得力無いんだろうな・・・
  • # re: ユーザの操作を制御する/悪意のデータからシステムを守る
    がる
    Posted @ 2006/08/22 17:17
    がるです。相変わらずこの手のネタには食いつきがいいです(笑
    悪意の防御って…まぁ非常に難しいのだろうとは思うのですが。が、「難しいからやらない」ではおまんまが食いあがってしまうので。
    個人的には何はともあれ「HTTP、RFCでちゃんと読もうよ」からスタートしたいところですねぇ。HTTPを把握すれば「操作を制御した程度でどうにかなる」なんて発想、根底からなくなりそうなものなんですが(苦笑

    ただ、最近気になるのが。「Page単体における」セキュリティは、それでも大分話しに上がるようになってきたのですが。
    「Page遷移に伴う設計レベルのセキュリティ」が相変わらず…。
    未だにパスワードリマインダには「記述参考例」がはびこり、パスワードを忘れたときにメールアドレス入力間違えれば丁寧に「登録されていません」と出てきて以下略。

    なんかこぉ、そのあたり、まとめてみたいものなんですけどねぇ。

    ちなみに。「自部署だけで使うものだからかまわない」は、知っているかぎりあらゆる状況において「なんだこんな機能があるんならネットでも公開しようよ」って話になるころにはセキュリティの欠落なんてすっかり忘れ去られてどこかで悲鳴を上げることになります(苦笑

    昨今、ヘタな脆弱性は「お金にされちゃう」だけに、より一層の注意が必要だと思うんですけどねぇ。
  • # re: ユーザの操作を制御する/悪意のデータからシステムを守る
    Jitta
    Posted @ 2006/08/23 21:58
    買太郎さん、ちゃっぴさん、がるさん、コメントありがとうございます。

    > 責任者に確認の上で工数を減らしたりする
     あ、これはありですね。まぁ、このときは中途半端に実装せず、「まったく実装しない」ようにしたいですけど。で、「これするな、アレするな」を、画面上にメッセージとして出す・・・って、やってます。。。


    > # そのためには実際に hack できるだけの技術をもった
    > # 人が身近にいないと説得力無いんだろうな・・・
     う~ん。。。それはそれで、難しいですね。確かに質問者のプロジェクトでも、話をした上で、ユーザの操作を制御する方向に持って行こうとしているわけですから、画面だけしかとらえていないわけですね。


    > なんかこぉ、そのあたり、まとめてみたいものなんですけどねぇ。
     では、ぜひ!!(._.) φ メモメモ
  • # re: ユーザの操作を制御する/悪意のデータからシステムを守る
    ちゃっぴ
    Posted @ 2006/08/25 2:18
    > う~ん。。。それはそれで、難しいですね。
    > 確かに質問者のプロジェクトでも、話をした上で、
    > ユーザの操作を制御する方向に持って行こうと
    > しているわけですから、画面だけしかとらえて
    > いないわけですね。

    いや、私の場合、私が PG に・・・ orz
タイトル
名前
Url
コメント