concon問題について

[上に] [前に] [次に]
みやび 2000/03/01(水) 11:38:18
今、巷を賑わせているコンコン問題です。
この問題の為に、掲示板のタグを禁止するのは何かイヤです。
そこでこのconconconやその他の文字列が書き込まれた時に
これを排除するか、受け付けないようにする事は可能でしょうか?
宜しくお願いします。

参考
http://www.wakaba.toyonaka.osaka.jp/~ikemo/concon.html
【Windows95/98のconconバグについて】

EMI 2000/03/01(水) 11:53:34
掲示板のタグに、これを書かれなければいいわけですよね?
とりあえず、思いつきで書いてみました。

s!<([a-zA-Z]+).*?con/con.*?>(.*?)</(\1)>!\2!mg;
s!<[a-zA-Z]+.*?con/con.*?>!!mg;

こんなもんで?

EMI 2000/03/01(水) 12:25:49
あ、conに限らないんでしたっけ。
とりあえず、改良版。
s!<([a-zA-Z]+).*?/(con|prn|aux|nul|lpt[0-9])/.*?>(.*?)</\1>!\3!img;
s!<[a-zA-Z]+.*?/(con|prn|aux|nul|lpt[0-9])/.*?>!!img;

ところで、[a-zA-Z]や[0-9]の短縮表記ってありましたっけ?

EMI 2000/03/01(水) 12:30:43
逆スラッシュにも対処した方がいいですかね?

s!<([a-zA-Z]+).*?(/|\\)(con|prn|aux|nul|lpt[0-9])\b.*?>(.*?)</\1>!\4!img;
s!<[a-zA-Z]+.*?(/|\\)(con|prn|aux|nul|lpt[0-9])\b.*?>!!img;

Syn [E-Mail] 2000/03/01(水) 12:30:54
いっそのこと、デバイス名を含む含まないにかかわらず、 file:
スキームへのリンクを無効化すればヨイような気も…。
正規表現は書けないのですが(^_^;

みやび 2000/03/01(水) 12:31:00
うげーーー。
参考で記したサイトの掲示板にこんな書き込みが・・・。
-----------------------------------------
  CON,AUXなどで盛り上がっているみたいですが、
   他にも沢山あります。
   自分のシステムを除いてみると...

   NUL,IFS$HLP$,DblBuff$,CON,KKCFUNC$,JKEY$
   $IBMADSP,$IBMAFNT,BILING$,$MMXXXX0,XNSXXXX0
   AUX,PRN,CLOCK$,COM1,LPT1,LPT2,LPT3
   CONFIG$,COM2,COM3,COM4,EMMXXXX0
   mscd$$$$,MS$KANJI

   特にWindows3.1からバージョンアップした人などは
   もっと違ったものもでると思います。
-------------------------------------------
うむむむーーっ。

EMI 2000/03/01(水) 12:45:12
げげっ!確かに多い‥‥‥
じゃあ、Synさんの書き込みを受けてこんなの。(確かに、fileスキームへのアクセスなんて必要ないし)

s!<([a-zA-Z]+)[^>]*\bfile:.*?>(.*?)</\1>!\2!img;
s!<[a-zA-Z]+[^>]*\bfile:.*?>!!img;

EMI 2000/03/01(水) 12:53:31
おっと、Hn要素に対応するのを忘れていましたね。
Hn要素といえど、
<h1 style="background: url(file:///c|/con/con)">なんたら</h1>
という指定ができるので、油断は禁物です。

s!<(\w+)[^>]*\bfile:.*?>(.*?)</\1>!\2!img;
s!<\w+[^>]*\bfile:.*?>!!img;

S-pore [HomePage] 2000/03/01(水) 13:03:36
http://www.s-pore.com/bbs/bbs.cgi
とかいう,いかにも掲示板らしきリンクをはって,
bbs.cgiの出力の Location: ヘッダで concon に飛ばすといった
方法もありますからね・・・。(注:上のURLは架空です)
まあクリックしなければいい話なので,
掲示板を表示するだけで落ちるというのよりはマシだとは思いますが・・・。
(ていうかリンク先での出来事までいちいち気にしてたらきりがないですね^^;)

これを解決しようとすると,投稿内容に含まれているURLについて
socketを使ってそのページに怪しいものが入ってないかを
いちいち確認することになりますね。(重くなりそう)

↑他にいい方法はあるでしょうか?

EMI 2000/03/01(水) 13:10:48
今気が付いたけど、上の正規表現じゃCSSのfoo-fileみたいなプロパティに対処できないね。いや、今はないけどさ。
まぁ、できてから考えればいいんでしょうけど。
#XSLとかだとどうなるんだろう?

EMI 2000/03/01(水) 13:22:21
むぅ、今気づいたけどこれじゃあ
<html>
<body>
  <img src="file:///C|/con/con">
</body>
</html>
の様なファイルを作って
<object data="http://xxx.xxx.xxx/badly.html" type="text/html"></object>
みたいなobject要素を埋め込まれたときに無力だ‥‥‥
でも、これに対する有力な解決策なんてないですよね?

object(やembed・iframeなども)無効化するぐらいしかないか。

匿名希望 2000/03/01(水) 13:34:33
Web上で被害が出るとは言っても、これはOSのバグの問題ですので、ここで話し合うべき内容では無いと思います。

みやび 2000/03/01(水) 14:41:27
>Web上で被害が出るとは言っても、これはOSのバグの問題ですので、
>ここで話し合うべき内容では無いと思います。

確かにバグ?(もう致命的な欠陥と言うほうが正しいかも)でしょうけど、
この問題については、健全なホームページ作成の一環だと思います。
野放しにはできないのではないでしょうか?。

チャペル 2000/03/01(水) 14:46:47
>Web上で被害が出るとは言っても、これはOSのバグの問題ですので、ここで話し合うべき内容では無いと思います。

まぁ、質問の内容自体は掲示板の事なので、ここで良いかと・・・。

GTO 2000/03/01(水) 14:58:24
話を元に戻して

file:〜 に関しては file:を &#xxx で文字コードに
置き換えれば問題なさそう(未確認)

# file:が使えなくなっても不具合はあまり無いですよね?

EMI 2000/03/01(水) 15:06:28
>file:〜 に関しては file:を &#xxx で文字コードに
>置き換えれば問題なさそう(未確認)
意味ないですよ。
<img src="hoge.cgi?aaa=aaa&bbb=bbb">
というCGI呼び出しが不正で、
<img src="hoge.cgi?aaa=aaa&amp;bbb=bbb">
としなきゃならないことを考えればわかると思います。

># file:が使えなくなっても不具合はあまり無いですよね?
たぶん、ないでしょうね。
イントラならば、場合によっては役立つかもしれませんが。

GTO 2000/03/01(水) 16:24:52
>意味ないですよ。
失礼!!
じゃあ s/file/file/g とかで逃げるとか…

YUFU [E-Mail] [HomePage] 2000/03/01(水) 21:12:11
<IMG src="../con/con"> でも落ちます。
そのあたりもご考慮を。< CGI 制作者および管理人の方々

# 私は直ちにタグの使用を不許可にすることを推奨していますが。
# 下記 URI からこのスレッドへリンクしました。
http://www.oct.zaq.ne.jp/yufu/browser/2000/02.html#26_03

EMI 2000/03/01(水) 21:29:52
><IMG src="../con/con"> でも落ちます。
これ、サーバがWindowsじゃなくても落ちるんですか?

じゃあやっぱり、
!<(\w+).*?(/|\\)(con|prn|aux|nul|lpt[0-9])\b.*?>(.*?)</\1>!\4!img;
s!<\w+.*?(/|\\)(con|prn|aux|nul|lpt[0-9])\b.*?>!!img;
かなぁ。
数が多くて大変なんですが。

いずれにしても、object・embed・iframeだけは禁止するしかないですね。

YUFU [E-Mail] [HomePage] 2000/03/01(水) 21:58:50
すみません。
サーバ上では大丈夫でした。
> <IMG src="../con/con">

たかぴー 2000/03/03(金) 18:03:55
http://www.a2001.com/down/concon.html
参照してみてください

みやび 2000/03/03(金) 23:00:24
[[解決]]
結局、こういう方法しかないようですね。みなさん、ありがとうございました。
他に良い方法があればまた教えて下さい。

レポート希望 2000/03/03(金) 23:15:37
http://www.forest.impress.co.jp/article/2000/03/02/decon.html

びーだま [E-Mail] 2000/03/04(土) 01:24:00
はじめまして、びーだま といいます。
EMIさん、がんばっていますね。

一見うまくいっている様にみえるんですが、でも、置換で
対象文字列を削除をしてしまうのは根本的に危険なのです。

たとえば、

f<消えるパターン>ile:

みたいにされたらどうなりますか?

おそらく、この問題は正規表現1発で回避することは不可能
に近いです。これをなんとかするには、フィルター後の文字列
にパターンが見つからなくなるまで、ループしなければだめで
しょう。

でも無限ループに注意ですね。ループ上限を設けることでこれを
防ぎげると思いますが、これでも不十分で、書き込みの容量制限
が掛かれば、物理的にループの回数も上限ができるのでそうした
方が安全でしょうね。

どうしても、正規表現で解決したいなら、削除はしてはなりません。
何かの文字に必ず置換する事です。たとえば、HTML表現なら、
<!-- --> とかに変換すれば見た目はOKでしょうね・・・(あまり
本望じゃない気がしますが・・(^^;)

と、ここまで考えるなら、私ならユーザーがHTML使えないのは
イヤだといっても強気にに&lt; &gt; します。。。(^^;

びーだま [E-Mail] 2000/03/04(土) 01:33:04
あ、もう一つありました。
たまに、HTTP_USER_AGENT の表記を出力している掲示板って
ありますよね。これが結構曲者です。

HTTP_ で始まる環境変数は、HTTP要求ヘッダーで容易に書換
可能ですから、ここに、タグ等が書かれていたらフォームから
書込されたのと同じことになってしまいます。

ので、これらの情報を表示させたい掲示板の場合は、環境変数
の内容にも気を配る必要があります。

というか、これは表示させなくても良いですよね・・・管理者
が把握さえできれば。。というか、書換可能なことからわかる
様に、あまり意味はないともいえますね。

びーだま [E-Mail] 2000/03/04(土) 01:46:15
つっこみばかりで、ごめんなさい。
もう1つ、EMIさんの解決法に欠陥を見つけてしまいました。

複数行に渡るタグが記述された場合にどのように回避しますか?
例の正規表現では、1行にタグが収まる場合にしか対応できませんね。
これが前提なら良いでしょう。

Perl での構文解析は事実上不可能ではないかとよく言われている
問題なので、この解決は・・・かなり難しい部類ですね。

方法として考えれられるとすれば・・・改行コードは一度除去
するか、ヌルに変更して、結果を1行として扱い再度文字列を
評価するとかでしょうか・・。

EMI 2000/03/04(土) 01:54:18
いや、その致命的欠陥は少し前に気付いたんですけどね、一応。
解決策というか、根本的な間違いとして就職誌をimgからisgに帰れば直るかと思ったんですけど。

>でも無限ループに注意ですね。ループ上限を設けることでこれを
無限ループ起きますかね?
どこかで、終わると思いますけど。

まぁ、スタックオーバーフローが起きる可能性がないわけでもないけど、そんな書き込みは確信犯だろうからエラーが出て落ちる文にはデッドロックにさえ気を付ければ問題ないかと。
#ちょっと甘いかも。

びーだま [E-Mail] 2000/03/04(土) 02:04:50
>>でも無限ループに注意ですね。ループ上限を設けることでこれを
>無限ループ起きますかね?
>どこかで、終わると思いますけど。

たしかに、書込は物理的に有限ですから、どこかで終わりますね。(^^;
でもこの場合再帰的動作なので気をつけなきゃならんことは間違
いないんでしょうね。。。

確かに、こんなことをするのは確信犯ですから、対応すべきことは
別件ですよね。

と、言いますか、結局”無効なものは削除”ポリシーはかならず欠陥が
生じますから”有効なパターンのみ許可する”ポリシーなロジックに
変えた方が安全なのは間違いないでしょうね。

みやび 2000/03/07(火) 14:11:37
実害報告

先日、「石鹸掲示板」にてリンクをクリックしたら見事に落ちました。
そんな事には縁のない掲示板だと思ってましたので、なんだかショックでした。
これ引っかかると結構イヤなもんですね。

マハール 2000/03/07(火) 14:38:47
落とされた人はご愁傷様・・・
でも、NT使いながらいろんなチャットでこの技連発すると楽しいよぉ。(笑)
女の子の名前でホームページのURLのところにconcon書いておくと
馬鹿な男どもが落ちる落ちる!!(爆笑)
いいストレス発散になりました。MS様様です。
みんなもやってみ!笑えるから!

Ichi 2000/03/08(水) 07:19:43
ファイルを指定できるタグを全て禁止するのが、簡単で、確実ですよね。
逆に、ファイルを指定できないタグから、掲示板への投稿時に
必要であろうと思われるタグをいくつか許可しておく。
リンクは、http:...やftp:...などに自動的にリンクを張る。

この辺りで我慢するのがいいかと。

こいで [E-Mail] 2000/03/08(水) 22:27:01
落ちる

つまり [E-Mail] 2000/03/08(水) 22:30:07
メアドは@とドット以外の特殊記号を、
URLはスラとドットとコロンとチルダ以外の特殊記号をマスクしちまえばいいんでないの?

Ichi 2000/03/09(木) 06:06:31
上の私の方法に加え、style, background, onXxxx属性を禁止すればOKかな。

[上に] [前に] [次に]