- - PR -
ASP.NETでの閲覧者情報
投稿者 | 投稿内容 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-25 13:26
がるがる氏
本題の件で私は >HTTPがTCP/IP上で提供されるとは限らない。 >ASP.NETはTCP/IPベースで提供されている。 >TCP/IPはUDPと違い投げっぱなしではない。 という風に書き込みました。 誤解のある書き方をした私が悪いのですが、その後の書き込みなどを見てから 突っ込んで欲しいものです。 2chのように揚げ足をとって遊んでいるというなら別ですが・・・ また、色々な脅威について語られていますが、 踏み台にされないなどは、言うまでも無く注意すべきことでは無いのですか? 色々なアイデアが出てきたなかで、その方法ではこういったセキュリティの穴がある などの情報はありがたいのですが、現状については既にセキュリティを考えた上で 実装しており、これが今回の問題ではありません。 また、HTTPだのブラウザだのASP.NETだの言っていますが、 最初に書いたとおり、この辺にこだわってはいません。 このBBSに書き込む前、プロジェクトではTCP/IPでどうにかできないか? という案もでました。 ネットワーク系のコマンドラインなりツールなりでこういった情報が取れないものか? (以前の書き込みでNETSTATコマンドがどうとか書いたと思います) それともパケットモニタのような機能を実装し、パケットを解析すれば できるのではないか? などの意見が上がりました。 しかし、我々の知識不足からもっと簡単な方法は無いものだろうか?という事で こちらのBBSに書き込んだ次第です。 正直、このような話の流れにウンザリしています。 私は、当初の質問の事項についての技術的な意見交換を期待していました。 また、最初の方の書き込みでもASP.NETやHTTPでの実装は難しいであろうという事も 書きましたが、以前として出てくる意見は、HTTPの仕様やなぜ無理かという 既にわかりきった情報ばかりです。 皆様の技術やレベルが高い事は認めますが、一定方向からの技術にしか目が行かなく 少し頭が硬くなっているように、私からは見られます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2005-07-25 13:56
だって HTTP では難しいから スマートクライアントにすればって意見は
否定するし、DAIさんが「こだわっている」ように見えるんですが。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2005-07-25 14:34
全部読んでないので、外れていたら失礼。
REMOTE_ADDRを見て、指定時間以内だったら、ダウンロードできないようにするというのはダメですか。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2005-07-25 14:56
がるです。
少々どころではなく長くなり恐縮ですが
さて。どの辺に「奇異さ」を感じられましたかな? DAI氏の
という書き込みからの修正がないことからも予測されるとおり、 DAI氏がHTTPというプロトコルをどこまで認識しているかについては 非常に懐疑的であると感じられますが。 まがりなりにも技術者であるのなら(ないにしても、ですが)、 きちんと「根拠」を提示しつつ発言しましょう。 根拠を省略しての発言は、あまりにも軽く、薄く感じられます。
言わなければ通じない。そんなものです。 また、 ・踏み台にされてはいけないと漠然と認識する ・詳細なクラック手段のリストを元に「明瞭に」認識する では、それこそ天と地ほどの差異があるのもまた事実です。 そうして「自分が知らないことは認識できない」事もまた。 だからこそ「わかりきっているはずの事象」でも「あえて文字 にする」ことで、自分の「欠けている」部分を他人に補って もらうものなのですが。 厳しく言えば。「言うまでもなく」という言葉を使っている 限りにおいて、その人は「無知の無知」状態であるといえます。
はたで見て、とうていセキュリティを考慮しているようには見えませんが。 詳細は過去の記述をご参照ください。
ほほぉ。「無理である」ことが当初から認識できていたとは 到底思えませんが? 詳細は後述いたしましょう。
「技術をろくに知らなくて自分のやりたい事をそのまま押し通したいだけ」 の営業さんがよくいうタイプの発言ですね。 せめても、DAIさんが「相応の技術力を持った」うえで「頭の柔らかい」 発想を提示できるのであればまだしも、なのですが。 本当に「頭が固い」状況であれば、理由など提示せずに頭ごなしに 「駄目だ」っていうものです。 みなさんそうでしたか? 「きちんとした理由を筋道たてて説明した上で」駄目だとは 言われてませんか? 柔軟な発想ととっぴな発想の差異くらいは考えてみたいものです。 ーー さて。
この発言ですが。過去のDAI氏の発言を追いかけていくに、 仮に上記が事実であると仮定してなお「明らかに伝達能力に欠けている」 事がありありと伺えます。 # その時点でSEとしてはマイナスですね。 ちなみに先に少々。
まぁ「情報は取れます」が(限定されているとはいえ)。 どうやって「ダウンロードを絞る」つもりだったのでしょう? 動的にフィルタリングでもかけますか? # それこそ「かなり高度な技術」が必要ですが。 # っつかそもそも「ルーティング」をあわせないと意味ないですが。 # 「盗聴」じゃなくて「抑制」が目的である以上は。 # 技術力が一定のところになったら、一度「パケットフィルタリング」 # 系のファイアウォールとか実装するのも面白いものですが。
どのように? モニタリングで解決するような要求にはまったく見えませんが?
随分と初期に回答がでて、それを突っぱねたのはほかならぬDAI氏だと 思われますが。 回答は「認証機能を付ける」。 私は.NETは得手ではありませんが。人づてに聞く話ではAPIに認証機能が 存在しているようなので、それこそ「容易に」実装が可能なはずですが? ダウンロードの完/未完についてはまた別途、ですが。 さて、本題。 当初のDAI氏の書き込みに拠れば
とあり、この時点では「ASP.NETである」ことは前提条件の1つである ように見受けられます。 しかる後に
との書き込みから、やはりHTTP上で処理を行うことが前提になっている ことが伺えます。
ここ部分で「だけ」に強調がなされていること、またその後に 「どうやってASP.NETで使うか」といった発言が重なっている ことから、ASP.NETを用いることは欠かせない条件であるか それに近しいであろうことを予見させます。
この時点において、やはり ・HTTP上で問題なく運用できる使用である と認識されていること、また ・ブラウザが前提になっている ことから、最低限HTTPで、また、前述からほぼ確実にASP.NETでの 開発であろう事が推測されます。
この時点において特に注意書きがないことから、たいていの人は、 今までの流れを汲んで「HTTP上で」という文章が暗示的に付随しているで あろうと予測します。
この時点でもHTMLで書かれていることから -以下略-。
ここでもASP.NET及びHTTPについてのみ言及されていることから -以下略-。
この時点で初めて「HTTP以外でも」となるわけです。 この流れにおいて
と書かれても、たいていの人は困惑するでしょう。 # 「最初ってどのへん?」とかいう突っ込みもありますが。 また、上述の発言をシンプルに捉えると、冬寂さんの
という発想に行き着くひとは多いと思うのですが。 私も「まったく同じ」感想を持ちましたし。 その上でなお
ログでどうにかなるとかパケットモニタリングでどうにか なるとか、このあたり「根本的に思慮が足りない」としか 思えない発言が続いていて、なんかこぉ「半分笑えて半分 あきれて」状態です。 一応念のため技術的解説。 今までの記述を見ている限り、基本的要求は以下の3点です。 1.ある瞬間的時間軸における「閲覧者数」の把握 2.ある瞬間的時間軸における「ダウンロード人数」の制限 3.ある瞬間的時間軸におけるダウンロード機能の「個人をキーにした排他」 1番についてはそもそも「ダウンロードしている」「していた」 (つまりは閲覧している「であろう」)ことしかわからないのですが。 まぁかなりの制限を課すことで、ログやらパケットモニタリング やらで解決できないでもないです。 (Pageのダウンロードから3分以内なら「閲覧しているとみなす」とか) で。2番と3番は「TCPパケットに対して直接的な制御」が 必要になる機能です。 したがって、「閲覧したことを表す」ログやら「現在パケットが 流れていることを見ることが出来る」モニタリング程度では どうにもならんです。 OK? で。
気のせいです。あるいは、DAI氏が簡単に考えすぎです。 あるいは、ほかの方々が「なぜそのように考えるのか」を、 もう少し真摯にとらえられてみてはいかがでしょうか? DAI氏のクライアントさんのお話は「要求としては」非常に 面白いとはおもうんですがね。 もうちょっと違ったアプローチが「なんぼでも」あるように思います。 個人的雑感ですが。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2005-07-25 15:03
こんにちは。
本題から外れる議論を続けることになりDAI様には申し訳ないのですが、 私の中で消化しきれませんので、もう少しだけ続けさせて下さい。
HTTPの下位層にあたるTCPレベルでの通信時の動きとして、一旦接続を確立 したConnectionへServer側がメッセージ送信を試みた際に、既にそのConne ctionがクライアントによって切断されていた場合、 "Connection reset by peer"の応答メッセージがServer側に返されます。 私がTomcat、JavaServlet、IEでのテストを行った際に検知した例外も "java.net.SocketException: Connection reset by peer: socket write error" と、そのままであるため、少なくともIE環境においては クライアント側キャンセルの挙動を拾えるのではという結論に至ったのです が、どこか根本的に誤った解釈をしている部分があるのでしょうか? 私自身まだまだ勉強中の身で、自分の中で辻褄のあった場合にのみ掲示板で 発言するよう注意しているのですが、私の誤った解釈が元で議論を混乱させ る要因の一つとなっているとしたら、その際は皆様に深くお詫びしたいと思 っております。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2005-07-25 15:20
がるです。
未だ消化不良との事なので。おいらの発言が大田胃散に なればよいのですが(笑
うい。これについてはそうです。 # 実験はしたことあるです。「面白い実装だなぁ」とか思いました。
端的に一言で片付けると「仕様と実装の違い」ですね。 ちょいと厳密な話になるのですが。 HTTPの仕様を取り決めているRFC上において、 ・パケットの流れが途中で中断したときに何らかのエラーを発生させる という仕様はないです。 つまり、この時点から「HTTP上の仕様として、クライアント側の キャンセルを拾える情報が存在しない」ことになります。 ただ、実際に例えば「Windows 2003上で動くTomcatを開発」する 時に、あるいは「TCPではパケット中断が受け取れるんだから、ここは 例外を発生させたほうがより便利だよねぇ」ということで実装を することは十分にありえますし、この例については「実際に実装された」 パターンであると思われます。 # 仕様とぶつかり合うような内容でなければ、割合によくあります この場合、 ・限定された実装系(今回ならWindows上のTomcat)においてその挙動が起きた は確かに真であるのですが、それが ・ほかの実装系にちゃんと実装されている とは限らないですね(仕様にない動作なので)。 つまり、ここが「仕様と実装の違い」です。 # ぶっちゃけ「LinuxでApache」の実装系だと例外おきません(笑 まぁ、これは昔に私も怒られたのですが。 「実装を叩いて確認なんかするな。まずは仕様書をちゃんと確認しろ」 私の場合、リアルに「怒鳴られました」(笑 でも、確かに、特にHTTPなどは「元となる仕様」がきちんと存在 しているので、そちらをまず確認するのは「正しいなぁ」とか 思ったものです。
いへいへ。間違った解釈をみんなで考察したり修正されていったり する過程「こそが」もっとも重要な勉強だと思うです。 大切なのは「疑問に思うこと」と「間違えること」:-P で、間違いと疑問が解消されていく過程が「学習」だと、おいらは 思ってるです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2005-07-25 15:21
では、違った観点から..
「1ファイル落とした後、仕事を進め、その作業が終わったら次のファイルを開いて作業をするという形」 が嫌だから、 「殆どの人間が朝、出社してくるとダウンロードツールなどを使い、 今日1日必要なファイルを一気にダウンロードしよう」 とするのでは? 非ユーザーフレンドリーな仕様が、そもそもの問題にみえます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
投稿日時: 2005-07-25 16:05
無駄な議論は不毛なので部分的にレスします。
何度も言いますが現状の状態でセキュリティ的に問題は何1つありません。 ここで色々と出てきた実装方法でセキュリティ的に問題がある場合などは歓迎です。
ですからNETSTATでは、あるホストと通信はしてるんだなという事は分かるけど、 何をダウンロードしてるかなどの情報は取れないと書いたはずです。
そうでしょうか? 実際にこれもNETSTATと同じで案だけで詳しくは別の人間が頑張っていますが、 パケットのヘッダで送受信のIPやポートが分かります。 また、なんのデータを送受信しているのかも分かります。 更に、現状の通信状況がどうなのかも分かります。 ならば、サーバ側でサービスなどでダウンロード途中のデータの情報だけを 保持しておいて、ASP.NETからこのサービスへ状況を問い合わせ、 ダウンロードの状況を知ることは出来ないだろうか?という事です。 |