- PR -

ASP.NETでの閲覧者情報

投稿者投稿内容
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-22 06:09
私や他の方が指摘した問題点にたいして、全て「解決済み」とか「問題なし」と言う事はつまり後は実装するだけなんじゃないの?何が問題で掲示板に質問を投げたのか、まるで分からないのだけど・・・。

ダウンロードの完了を確実に知りたいなら、Windows Updateと同じようにActiveX使ってダウンロードの成功 or 失敗をサーバーに通知すればよいじゃない。

指定ファイルをダウンロードするようなページをASP.NETで組んで、同一IPアドレスからの2回目以降のダウンロード要求を拒絶すればよいじゃない。

#ちょっと検索してて思ったのだけど
#既存の公開されているISAPIフィルタって以外に少ないんだね・・・
蓮華
常連さん
会議室デビュー日: 2004/11/06
投稿数: 25
投稿日時: 2005-07-22 07:59
引用:
私や他の方が指摘した問題点にたいして、全て「解決済み」とか「問題なし」と言う事はつまり後は実装するだけなんじゃないの?何が問題で掲示板に質問を投げたのか、まるで分からないのだけど・・・。



その通りです。
前にも書きましたがApacheでのmod_limitipconnと同等機能のものを
どうやって実装するかが不明なのです。
仕様など色々と突っ込んで頂いたのですが、言われていることは
既に承知しており、ある程度の前提条件を設けたり技術的に解決させています。

引用:
ダウンロードの完了を確実に知りたいなら、Windows Updateと同じようにActiveX使ってダウンロードの成功 or 失敗をサーバーに通知すればよいじゃない。



それはそうなのですが、問題は時間と金です。
ActiveXを開発しないでも、いくつかの技術を組み合わせる事で同様機能が
実現可能ならば、時間もお金も掛からないで済みます。
出来れば、そういった別の方法が他には無いだろうか?という事です。

引用:
指定ファイルをダウンロードするようなページをASP.NETで組んで、同一IPアドレスからの2回目以降のダウンロード要求を拒絶すればよいじゃない。



簡単に出来れば苦労したり質問はしていません。
また、こういった言葉が出てくるのは私が言っている仕様を
理解していないだけとしか思えませんが?
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-07-22 09:15
引用:

簡単に出来れば苦労したり質問はしていません。
また、こういった言葉が出てくるのは私が言っている仕様を
理解していないだけとしか思えませんが?


んー・・・なんっつーかね。
ざっと見てみた限り、他人に説明する前に、自分で仕様というか問題点を理解出来ていないよーな気がする。
仕様を理解して、問題点をきっちり理解できてれば大抵「そこだけスポット」な質問が出てくるもんだし。
(で、「そこだけスポットな」問題点が分かればキーワードも浮かび上がってくるし、それを検索するなり調べれば・・・結局質問する必要は殆ど無くなるはずなんよ。)

で、まぁ余計な事かもしれんけど
引用:

掲題の件ですが、ASP.NETにて今現在どのページに何人の人間が閲覧しているのかを
管理者などが専用のWeb画面にて見たいというニーズが出てきました。


HTTPの仕様上「今現在」は不可能。
普通に作るとすると、ログイン制にして、その人が最後に見たページが分かる、って程度じゃないかなぁ?

引用:

それはそうなのですが、問題は時間と金です。


ほんとに時間と金が問題なんなら、無責任な無料掲示板に質問投げかけてる時間なぞ無いんじゃないかと。
蓮華
常連さん
会議室デビュー日: 2004/11/06
投稿数: 25
投稿日時: 2005-07-22 10:09
引用:
HTTPの仕様上「今現在」は不可能。
普通に作るとすると、ログイン制にして、その人が最後に見たページが分かる、って程度じゃないかなぁ?


この件、先程解決しました。
結論から言えば、管理者が確認画面を表示させた時点でのリアルタイムでの
閲覧者の取得は"可能"でした。(ログインの必要無し)
これもユーザ側からCGIなどでは出来るとの意見から、
フリーでソース公開されているものを解析しました。
全く難しいことはしておらず、いとも簡単でした。

引用:
んー・・・なんっつーかね。
ざっと見てみた限り、他人に説明する前に、自分で仕様というか問題点を理解出来ていないよーな気がする。


仕様や問題点を理解していない質問ではなく、
理解した上でどうにか解決できるようなアイデアを知りたいという書き込みである事を
まずご理解下さい。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-07-22 10:27
@IT会議室トップの下のほうに
@IT会議室は双方向の情報交換のためのコミュニティです。
って書いてありますね。

ということで、
・複数のブラウザを立ち上げた場合でも同一のセッションIDを発行させる方法

・管理者が確認画面を表示させた時点でのリアルタイムでの閲覧者の取得
の方法を教えてください。ぜひぜひ。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-07-22 10:48
どもです。がるです。
…んっと…どっちかっていうともう「後にほかの人が読むときに
混乱しないように」が主眼になってきてしまっておりますが。
一応、各所突っ込んでおきます。

…と、その前に。
引用:

Jittaさんの書き込み (2005-07-21 21:33) より:
引用:

がるがるさんの書き込み (2005-07-21 10:55) より:
WindowsUpdateで把握できるのは「IEを使うことを強制して」「JavaScriptをonにして」クライアント情報を気合で取り込んでいるから可能なだけです。


いや、甕星さんの投稿の中にあるように、ActiveX なので気合も何も、できるんです。ActiveX なので、IE でなければならないわけですね。
まぁ、IE でなくても、ネスケの最新のバージョンを IE モードでとか、ドーナッツ?や八本足の馬(六本だっけ?)という、IE コンポーネントを使っていればいいわけですけど。


なるほど〜。どうしても「HTTP」基準に考えてしまうので、このあたりは
割と(半意図的なのですが)意識からはずしてしまいますね(苦笑

で。本番です。

引用:

DAIさんの書き込み (2005-07-21 20:35) より:
引用:
微妙ですねぇ。機能云々の前に「ダウンロードが途中で止まってしまって」
という状況から「間違えてファイルを消してしまったからもう一度」
まで、さまざまな状況で「再ダウンロード」への要求ってあるので。
そのあたりはちゃんと考察しないと、運用開始後に地獄が見れます。


これは特別問題視していません。
再度ダウンロードだろうと途中で止まろうと、同一人物が複数のファイルを
一度にダウンロードできなければいいのです。
つまり、同じファイルは何回でもダウンロード可能です。


んっと。これって結局のところ
・あるアクセスにおいて「個人の特定を行う」
・各個人の情報が正しくストックされている
の2点が必要なのですが。

引用:

HTTPの特性上、特に問題になる仕様だとは思っていません。


HTTPをもう少しちゃんと理解したほうがよいですね。あるいは
「理解したつもり」であるというフィルタをはずしたほうが :-P
「どこがどのように」かは、またこれから書きますが。

もっとも。そも
引用:

また、ブラウザはIE、JavaScriptはONなどの規制はしています。
それ以外での動作の保証はしないという事は客側でも同意見であり了承済みです。


この時点で「HTTPの特性から外れた」事をやろうとしているわけなのですが。
# それが理解できていない時点でNG。

引用:

引用:
SessionIDで同一人物の複数ダウンロードを区別するのも困難です。WEBブラウザを二つ立ち上げた場合、それぞれのWEBブラウザは異なるSessionIDを持つ事になるので、簡単に回避できてしまいます。


これについては、既に解決済みです。
2つだろうと3つだろうと複数のブラウザを立ち上げた場合でも同一のセッションIDを
発行させることは既に技術的に解決しています。


これは…もしかして「IPアドレスをベースにセッションIDを作る」んじゃ
ないですか?
だとすると…またえらく「物騒な」ものになりそうで(苦笑
「IPアドレスをベースにセッションIDを作る」ことが物騒である理由は
わかりますか?

そうではないとすると…同一にするためのKeyが見えないですねぇ。

引用:

当方はLinuxやApacheについては基本程度の知識しかないのですが、
同一ホストからの接続数制限にはmod_limitipconnというものが使われているみたいです。


mod_limitipconnって(まぁほかの方もかかれてますが)
「IPアドレスを基準に」制御するのですが?
# まぁそれでいいというならいいのかな?

引用:

引用:
HTTPの仕様上「今現在」は不可能。
普通に作るとすると、ログイン制にして、その人が最後に見たページが分かる、って程度じゃないかなぁ?


この件、先程解決しました。
結論から言えば、管理者が確認画面を表示させた時点でのリアルタイムでの
閲覧者の取得は"可能"でした。(ログインの必要無し)


すごいですねぇ。
・コンテンツを投げたら終了
するだけのHTTPで
・「現在」該当Pageを閲覧しているかどうか
がわかるってあたりが。
# まぁJavaScriptでwindow.closeあたりのイベントとあわせて
# 無理やり取得が出来ないとは言わない。重そうだけど。

引用:

これもユーザ側からCGIなどでは出来るとの意見から、
フリーでソース公開されているものを解析しました。
全く難しいことはしておらず、いとも簡単でした。


多分実現はいとも簡単。で、考察が足りなくて抜けすぎて、
抜け道やら穴やらがたくさんあって「クラックもいとも簡単」。

引用:

引用:
んー・・・なんっつーかね。
ざっと見てみた限り、他人に説明する前に、自分で仕様というか問題点を理解出来ていないよーな気がする。


仕様や問題点を理解していない質問ではなく、
理解した上でどうにか解決できるようなアイデアを知りたいという書き込みである事を
まずご理解下さい。


これだけ多くの、言っちゃぁなんですが「ベテラン勢を含む」
方々(除く自分)がこれだけの苦言を呈しまくってる理由とか
原因とかをもうちょっと真剣に考えてみませんか?
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-07-22 11:12
どもです。がるです。
To 一郎さんへ。です。

一応「前提条件をかなり限定する」ことで、再現できなくもないです。
問題は、少なくとも私が考察している方法だと仮定すると「穴が
ありすぎて実用には適さない」のですが :-P
引用:

・複数のブラウザを立ち上げた場合でも同一のセッションIDを発行させる方法


これは「IPアドレスをキーにして」セッションIDを発行すればOKです。
この場合、原則として
・同一PCであれば同一のIPであろう
という予測がある程度までは成り立つので、「複数種類のブラウザ」で
「同一のセッションID」が可能になります。

問題点としては。
IP取得を「(何らかの手段で)ソケットから取得する」場合、
・NAT及びNAPTでISPからIPが適宜変更されている
ケースでは何の役にも立ちません(笑

次に、IPをkeyにってことは「セッションハイジャック」が極めて容易
です。
識別機能を「どの程度強化するか」って部分との考察になるので、
ここで短絡的にNGとはいえないのですが。
よっぽど慎重に考えないと危険であるってのは事実かと思います。

引用:

・管理者が確認画面を表示させた時点でのリアルタイムでの閲覧者の取得


んっと。ようは「現在Pageを開いているか」が確定できればいいので。
・セッションIDで個人が特定できる
事を前提に
・Page(ブラウザ)が閉じられる瞬間をJavaScriptでフックする
ことで実現が出来ます。
いやまぁ問題点は山積しておりますが(笑

まず当然のことながら「正確な個人特定」が必須です。上述の
「IPによるセッションID」のような精度のない手段でこれをやると
誤差乱発になります :-P

続いて「JavaScript必須」です。何をかいわんや。
# 個人的には「"なくても正常に動く"状態」以外で使うあらゆる
# JavaScirptに否定的です。

多分Active Xでも出来るんでしょうが…あれは本当に環境依存が
ひどいので、個人的に苦手です。
# 歴史経緯的に穴が多いってのも個人的には苦手。
# そも、おいらIEなんて使ってないし :-P

あとはやっぱり「偽装が容易」ってところでしょうか。

とまぁこんな感じで。
制限とか穴とか色々と大切なものを無視すれば、実現できないもの
でもないです。
それが「実用に足るものなのか?」ってのはまた別問題として :-P

以上、半雑談チックなつれづれでした。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-22 20:13
DAI さん:
 もし、「質問したことの答えだけが欲しい」のでしたら、申し訳ありません。私たちは少々お節介が過ぎます。他を当たってください。

 甕星 さん、がるがる さんとも、他の投稿を見ている限り、問題を局所としてではなく、一歩引いて見ることができる方々です。
 このうち、がるがる さんについては先日 OFF 会で直に話す機会がありました。本人はご謙遜なさっていますが、かなりの技術力をお持ちの方です。まず、平行して複数の仕事をこなせる方です。また、@IT 自分研究所のほうで、勝手に講座を開くなど、知識も経験も豊富です。
 また、甕星 さんも MVP 表彰を受けていることや、MCP C# を取得されていることなどから、相当の知識と技術力をお持ちの方であると推測されます。

 そういう方々が、「これこれの理由で無理だ」とおっしゃっているところを、「HTTPの特性上、特に問題になる仕様だとは思っていません」とか、「既に技術的に解決しています」「既に承知しており、ある程度の前提条件を設けたり技術的に解決させています」など、根拠を明示せずにおっしゃっているのは、訴求力に欠けると思います。

 先にも申し上げたとおり、私どもは少々お節介が過ぎるようです。あなたが「解決させている」とする“根拠”を明確にご呈示願えませんか。私どもは、その“根拠”が、セキュリティ的に問題があると思っております。お節介と思われるでしょうが、セキュリティ的に問題がないか、検証させてください。
 できる、できないには、段階があると思います。「1:まったく不可能」→「2:できないことはないが、穴だらけ」→「3:穴もなくできる」という段階です。失礼ですが、このうち2の段階で「解決させている」とおっしゃっていると判断しております。この状態でシステムを納めて、「Office氏事件」のようなことが発生すると、困るのは最終ユーザから DAI さんがお勤めの会社まで、すべてではないですか?


 さて、ここまではセキュリティの面で、今回のケースを考えてみました。次に、技術の面で考えてみたいと思います。

引用:

前にも書きましたがApacheでのmod_limitipconnと同等機能のものをどうやって実装するかが不明なのです。


このお言葉と、
引用:

ActiveXを開発しないでも、いくつかの技術を組み合わせる事で同様機能が実現可能ならば、時間もお金も掛からないで済みます。


このお言葉が矛盾しています。これまでの「無理」という言葉より、mod_limitipconn と同等機能のものが存在しない、あるいは私どもが所在を知らないことは想像に難くないと思います。または、ソースコードも配布されているのですから、読み解けば同等のものを作ることも可能でしょう。ざっと見てみましたが、コメント込みでも260行ですから、そう難しいものではないでしょう。

 また、このお言葉は、
引用:

これもユーザ側からCGIなどでは出来るとの意見から、フリーでソース公開されているものを解析しました。
全く難しいことはしておらず、いとも簡単でした。


引用:

2つだろうと3つだろうと複数のブラウザを立ち上げた場合でも同一のセッションIDを発行させることは既に技術的に解決しています。


とも矛盾するのです。あるソースコードは解析済み。であれば、mod_limitipconn も解析でるでしょう?また、私の知識では、セッション ID は ASP.NET 内部で割り振られます。これを外から制御することはできないと思います。しかし、同一のセッション ID を割り当てることを可能にしている。つまり、ASP.NET の内部をハックして、一部の動作を変更させている、と理解されます。それだけの技術力がおなりなら、mod_limitipconn 相当の機能を組み込むこと、ご希望の機能を持った ActiveX オブジェクトを作ることも、簡単にできるのではないかと思います。

_________________

スキルアップ/キャリアアップ(JOB@IT)