トップページ⇒php
1001コメント344KB

CGI: Common Gateway Interface part 11

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/06/14 22:26ID:F9qlqHNx
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

Perlのコーディングに関する質問は、専用スレでお願いします:
[Perl 初心者コーナー Part24]
http://pc2.2ch.net/test/read.cgi/php/1054992610/

CGIとPerlの区別がわからない、という人はとりあえずこちらへ:
[WebProg 初心者の質問 Part3]
http://pc2.2ch.net/test/read.cgi/php/1045091733/

過去ログ・関連スレッドは >>2-5 あたりに
068768504/02/10 22:04ID:???
なんか間違ったこと言ってる?
0688nobodyさん04/02/10 23:33ID:???
>>685
一つだけいえるのはCGI(サーバー側)でやるべきことではない。
0689nobodyさん04/02/11 10:52ID:???
>>685
redirectって知ってる?
069068504/02/11 14:53ID:???
>>688
できないってことだよね。そうします。ありがとう。

>>689
できるならuser-agent, refererを偽装したまま
redirectする方法を教えてください。
0691nobodyさん04/02/11 15:17ID:???
>685
CGI proxy なんてやる意味はあまりないぞ
重いだけ
0692nobodyさん04/02/12 04:41ID:???
>>690
redirect 知ってるならそんなことが出来ないのも分かるよね?
069368504/02/12 09:35ID:???
>>691
ふつーにローカルで動かすスクリプトにしました。

>>692
無理だと思ってたけど誰も答えてくれないし
689を見てできるのかなと思ってしまいました。
0694nobodyさん04/02/12 13:42ID:???
>>693
誰も答えなかったのは、CGIの問題ではないからだと思われ。
0695nobodyさん04/02/12 16:41ID:???
>>685だと暗黙の要求が見えてこないからねぇ

(エロい人の思考パターン)
 エロ動画に直リン -> httpリクエストを弄らなきゃ!
   -> >>690でやっぱり偽装か -> 無理
(ノーマルパターン)
 各自DL -> 意味あるのか分からんが(;´Д`)リダイレクトで可能
0696nobodyさん04/02/15 07:40ID:YoBoJyol
cgiからhtmlメールを出すとき(ただし、htmlのみでなく、$boundaryで、
テキストメールとhtmlメールの両方を1通にまとめて送ってます)、
htmlメール部分の文字コードは・・・
●規約としては、どのコードにするのが正しいのでしょうか?
また、
●現実問題として、どのコードににするのが「無難」なんでしょうか?

ご存じのかた、教えていただければ幸いです。
0697nobodyさん04/02/15 07:55ID:zLVCaZam
Apache2を使用しているのですが、以下のようにcgi-binに設定
したディレクトリにHTMLファイルを置いてもブラウザでその
HTMLを閲覧できません。(permission denied error)
どーしても cgi-bin ディレクトリにHTMLファイルを置きたいのです・・・。
宜しくお願い致します。

<Directory "/usr/local/apache/htdocs/cgi-bin">
SetHandler perl-script
AddHandler cgi-script .cgi .pl
PerlHandler ModPerl::Registry
Options ExecCGI
Allow from all
PerlSendHeader On
</Directory>
0698nobodyさん04/02/15 12:25ID:bW2T2U/M
ここで質問していいのか分かりませんが
メールフォームで画像も添付できるようにしたいと思っています。
今はココ(ttp://www.annie.ne.jp/~cgipal/doc/palskin.htm)の
palskin mail ver.5というのを使っています。
できればこれに書き足してできれば最高なのですが…
こういう事は可能でしょうか?
0699nobodyさん04/02/15 13:30ID:???
>>698
【 スクリプト改造工房 PART 7 】
http://pc2.2ch.net/test/read.cgi/php/1063780103/

ちなみにその文面のまま依頼すると叩かれるので注意。
1をちゃんと読むこと。
0700nobodyさん04/02/16 00:41ID:???
とりあえず >>1 を読んで、意味がわからないならここで質問しても無駄かと。
本当はスルーしたほうがいいんだろうなーとか思いつつ。
0701nobodyさん04/02/26 20:49ID:???
http://hoge.com/ のCGIから、
http://fuga.com/ に Location でリダイレクトしました。
でもアドレスバーのURLは http://hoge.com/ のまま。
こういうもんなのでしょうか?

リダイレクト後にリロードすると、hoge.com で送信した内容が二重で送信されてしまいます。
これもこういうもんなのでしょうか?
070270104/02/26 21:06ID:???
print qq(Location: /\n\n);

だと、アドレスバーはリダイレクト前から変化せず

print qq(Location: http://hoge.com/\n\n);

だと、アドレスバーが http://hoge.com/ になってくれますね。

相対パスだと変化しなくて、
httpからのURLだと変化するようです。。。
とりあえず確認したことをご報告します
0703nobodyさん04/02/26 21:12ID:vjE+BrRn
 
0704nobodyさん04/02/26 21:22ID:???
>>701
・・・
070570104/02/26 21:47ID:???
>>704

適当に例えたものが、httpになってましたね・・・
0706nobodyさん04/02/26 21:57ID:???
なんだか微妙にあちこち間違って覚えてるようだな
0707nobodyさん04/02/26 23:29ID:???
HTTPとCGIについてもっと勉強しれ
070870104/02/27 00:53ID:???
>>706,707
すいません、どっかものすごい勘違いしてますでしょうか。。。汗
0709nobodyさん04/02/27 01:42ID:???
Location: は絶対URIでは
つまり http://からはじめれと
0710nobodyさん04/02/27 02:28ID:???
http://無しで移動するのはブラウザの配慮
0711nobodyさん04/02/27 02:44ID:???
>>701
http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html#7.2.1.2

hoge.comは中の人に迷惑だからやめれ。
071270104/02/27 17:15ID:???
>>709, 710, 711

なるほど。
出直してきまつ。。

ありがとうございました!
0713nobodyさん04/03/02 19:04ID:AJEsvSvh
HTML出力のサニタイズについてなのですが、現在<>&"'を文字実体参照に置き換えています。
投稿に文字実体参照を使いたいのですが、&をサニタイズからはずすと、どういうマズイことがあるのでしょうか。

文字実体参照と解釈できるものだけ再置換してもいいんですが、特に問題がないようなら外してしまおうかと。

あと、<>についても、どちらか一方だけ文字実体参照に置き換えておけば大丈夫というのは誤りですか?
0714nobodyさん04/03/02 21:36ID:???
>>713
 君はトンデモなHTMLを出力しても平気なクチ?
最低限Validになってないのは恥ずかしいと思わないのかね。
0715nobodyさん04/03/02 21:44ID:???
>>714
思わないなぁ。そんな上っ面にはとらわれない主義だから。
もっと本質を見ようね。
0716nobodyさん04/03/02 21:48ID:???
>>713
>&をサニタイズからはずすと、どういうマズイことがあるのでしょうか。
>あと、<>についても、どちらか一方だけ文字実体参照に置き換えておけば大丈夫というのは誤りですか?

具体的実害は思いつかないが、少なくともHTMLとして文法違反になるのは確か。
予期せぬ表示上の不具合を発生させる可能性は否定できない。
そもそもなんでそんなにサニタイズを端折りたいの?

ちなみに俺は、HTML4.01の仕様に存在する実態参照だけは許して、
それ以外の&は&に置換するルーチンを書いた。
ここに貼り付けようと思ったが長すぎて拒否された。
071771604/03/02 21:52ID:???
>ちなみに俺は、HTML4.01の仕様に存在する実態参照だけは許して、
>それ以外の&は&に置換するルーチンを書いた。
>ここに貼り付けようと思ったが長すぎて拒否された。

区切って書いてみる

sub sanitizeamp
{
my ($str) = @_;
# 数値参照は OK (ただし末尾の ; が欠けている場合は補う)
if ($str =~ s/^?(\d+|x[0-9A-Fa-f]+);?/?$1;/) { return $str; }
# HTML4 に実在する文字参照は OK (ただし末尾の ; が欠けている場合は補う)
(続く)
0718nobodyさん04/03/02 21:55ID:???
elsif ($str =~ s/^&(nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest(続く)
0719nobodyさん04/03/02 21:57ID:???
|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig
|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|fnof
(途中途中に入っている改行は削除すること)
072071604/03/02 21:59ID:???
めんどくさくなったからやめます
0721nobodyさん04/03/02 22:01ID:???
>>715はなぜサニタイジングするかということ自体を全く理解してないようだ。
それでいて

> 思わないなぁ。そんな上っ面にはとらわれない主義だから。
> もっと本質を見ようね。

とか言っているんだから救いようがない。
具体的に色々問題があるわけだが、馬鹿には教えても無駄のようだから省略。

一見便利そうで利用者・閲覧者全員に迷惑を与える危険性の高いスクリプト
でも作って自己満足していれ。
072271304/03/02 22:08ID:???
>>716
サニタイズを端折りたいわけではないです。
具体的にどういう不具合が出るのかを知りたかったので。
実体参照だけ再置換するルーチンを組むのは面倒ではないのですが、&を素通しにしてOKなら処理が速いかな、と。

HTML4.01に準拠するとして、#PCDATAとして扱われるところには<>&"は直接書いてはいけない、という理解でいいですか?

>>721
713です。715は私ではないので。
>一見便利そうで利用者・閲覧者全員に迷惑を与える危険性の高いスクリプト
を作りたくないので、質問しています。よろしければ教えてください。
072371604/03/02 22:26ID:???
>>717-720
途中まで書いて中断するのも気持ち悪いからうp
ttp://www.geocities.co.jp/AnimeComic/5498/misc/sanitizeamp.txt
0724nobodyさん04/03/02 22:35ID:???
>>723

ありがと。サラッとみた感じで、数値の桁数を5ケタ以下にしといたほうがよさそうな。

まあ、あれですか。
<brockquote>また、著者は、「&」の代わりに「&amp;」(ASCII十進38)を用い、文字参照の冒頭――文字実体参照の開始区切り子――と誤解されるのを避けるべきである。</blockquote>
ということですね。

参考になりました。
072571604/03/03 01:28ID:???
>>713,>>722
サニタイズを端折った場合の問題を1つ思い出したので書いておく。

" のサニタイズを端折ったら
入力された文字列を value に取った input 要素の表示に異常が出たことがあった。
<input type="text" value="giko"monar"> となるべきところを
<input type="text" value="giko"monar"> になったってことね。

<> のサニタイズについても、< だけやって > を端折ったら
なんか問題が起きたような気がしたがちと今は思い出せん。
072672304/03/03 01:32ID:???
>>724
>サラッとみた感じで、数値の桁数を5ケタ以下にしといたほうがよさそうな。

なるほど。
数値実態参照の数値の範囲は16ビットなんだっけ?
?〜?
?x0〜?xFFFF
てこと?
072772604/03/03 01:57ID:???
ああ、間違った、
&#0〜&#65535
&#x0〜&#xFFFF
てこと?
0728nobodyさん04/03/03 12:03ID:???
Unicodeの文字番号を指してるはずだから、
今ではU+FFFFより上にも文字もある予感
0729nobodyさん04/03/09 12:04ID:TnCgMCud
掲示板とMLとの連携で情報交換システムを稼動させています。
ML登録CGIで掲示板の投稿の配信を受けるかどうか、選択し、
掲示板投稿時に投稿をその設定されたアドレスへメール配信しています。

で、MLアカウントへのメールが来たら、同時に掲示板への新規投稿として
掲示板に放り込みたいのですが、
どんな方法が考えられますか?
アウトラインだけでいいのでどなたか御教授下さいませ。
0730nobodyさん04/03/09 17:04ID:???
CGIで掲示板を作ろうとしてるんだけど、
規制として、何行以上書き込まないと書き込まれないような
スプリクト記述ってありませんよね?
0731nobodyさん04/03/09 17:07ID:???
パターンマッチで改行が何回あるか数えたらええんちゃうの?
そういう意味じゃないのかな…
0732nobodyさん04/03/09 17:08ID:???
>>730
あるでしょ。てか
アドレス入れなきゃ書き込ませない、なんて事はざらなんで、
ある一定の長さの本文じゃなきゃ書き込ませない、なんて
別にそうすればいいだけでは?

0733nobodyさん04/03/09 17:08ID:???
>>730
改行大杉が出来るんだから改行少なすぎもできるだろ
0734nobodyさん04/03/09 18:34ID:???
>>730
その程度も自分で判断できないお前には無理
0735nobodyさん04/03/09 18:45ID:???
>>730
> スプリクト記述ってありませんよね?

ありません。自分で書くしかありません。
できない場合は、掲示板の投稿の改行を数え、だめなやつは管理者権限で削除して下さい。
0736nobodyさん04/03/10 04:52ID:???
どうせまた「作る」=「設置」なんじゃないの
0737nobodyさん04/03/10 12:37ID:ZLD/dvfR
OSX Server10.3を使用して、CGIを動かしたいのですが、アクセスすると
http://foo.example.com/cgi-bin/tester
へ接続しにいこうとしてうまくいきません。
以前もこのような症状がおきて、その時教わったのが、vi -b で.cgiファイルを開いて、行の最後に^M か ^B がついていたら、それを、viの画面で何かのコマンド(%s/…)で変換したら問題無く動いたのですが、そのコマンドがどのようなコマンドだったか忘れてしまいました。
実際今はの.cgiファイルを、vi -b で開くと、行の最後には、^Mがついております。
どのようにしたら良いでしょうか。

0738nobodyさん04/03/10 13:01ID:???
>>729
だれか返事してやれよw

メールアカウントの.forward なりに プログラムを埋め込む
そのプログラムは、直接ログファイルに書き込むなり
その掲示板CGIを呼ぶなりして投稿と同じ処理をCGIにさせるなりする。
0739nobodyさん04/03/10 13:15ID:???
>>738
> >>729
> だれか返事してやれよw
>
> メールアカウントの.forward なりに プログラムを埋め込む
> そのプログラムは、直接ログファイルに書き込むなり
> その掲示板CGIを呼ぶなりして投稿と同じ処理をCGIにさせるなりする。

ありがとうございます。
/home/ACCOUNT/www/ 以下でCGI動かしてます。
mailのログは
/var/spool/mail/ACCOUNT ファイルにある事は確認しました
telnetから上記mailのログは読めましたし、
/home/ACCOUNT 以下に持って来れましたが
CGIからMail::MboxParser.pm使って中身見ようとしましたが、
当然ながらパーミッションの問題で持って来れませんでした。
その.forward使ってメール着信時に予め/home/ACCOUNT に
ファイルのコピーを持って来ればいいのでしょうが、
肝心の.forwardをどこに置けばいいやらよくわかりません、
宜しければお教えいただくか、ポインタ教えて下さい。
0740nobodyさん04/03/10 15:01ID:???
>>739
man forward
0741nobodyさん04/03/10 15:06ID:???
>>739
あー 掲示板CGIでログを解析しないほうがいい。

.forward の中で呼ばれるプログラムは
メールの内容を標準入力に渡されるのでそれを加工して掲示板のログに入れてあげればよいかと。
074273904/03/10 15:32ID:tqgEM6Ax
>>741
実は
/home/ACCOUNT/maillists/
にML設定ファイルがあり、それ宛へのメールをCGIで横取りしたいのです。

.forward を書いてみましたが
[email protected]宛てのメールは転送されましたが、
/home/ACCOUNT/maillists/test
で設定した
test@@ACCOUNT.com宛てのメールは転送されてきませんでした
まあ、当然といえば当然ですが。

やっぱり
/var/spool/mail/ACCOUNT をcpしてくるようなスクリプトを書いて
CGIからそれを叩く、って事なんでしょうか
0743nobodyさん04/03/10 17:13ID:bqGiGoNX
テスト
0744nobodyさん04/03/10 18:13ID:???
>>742
test のアカウントにも .forward おいたら?

spoolの下からコピーなんて邪道は許せんw
0745nobodyさん04/03/10 18:53ID:???
>>744
> >>742
> test のアカウントにも .forward おいたら?
>
> spoolの下からコピーなんて邪道は許せんw
はい、そうですね、僕もそうしたくないです。
/home/ACCOUNT/maillists/
これがMLのアドレスリスト記載したファイルの置き場で、
testにアドレスをいくつか改行で入れたものをこの中に入れといてやると

[email protected]で入れたアドレスにメールが配信されます。
/home/ACCOUNT/maillists/
には複数のMLアカウント用のファイルが置いてあります。
/home/ACCOUNT/maillists/.forward
として置きましたが無視されました。

どこに置けばいいんでしょうか…


0746nobodyさん04/03/10 19:34ID:???
/etc/aliases
0747nobodyさん04/03/10 20:11ID:???
>>746
> /etc/aliases
調べてみました。
telnetで除きに行きましたが Permission denied
で、見せてもらえませんでした。

現状 [email protected]宛てのメールは
~/.forward で捕まえられそうなので、
全てのMLへ[email protected]を参加させ、
そいつを~/.forward で捕まえてto: MLアドレスなら処理、
見たいな事でやってみようと思います。。
0748nobodyさん04/03/10 20:28ID:???
"| naniwoyattenndai"
0749nobodyさん04/03/11 00:53ID:XsdX+AtW
質問です。
自宅サーバ開設の実験として、Kent Webさまよりyybbsをダウンロードして、
文献(Mac OSX Unix的活用講座)の指示通りperlのある場所の指定をし、
アクセス権を正しく設定しましたが、"Internal Server Error"となってしまい
ます。職場/自宅の両方の環境で試しましたが、ダメです。Kent Webさまの
FAQコーナーの事項はすべてチェックしたつもりです。いったいなにがダメ
なのか教えてください!Askaは問題なくうごくのですが・・・
サーバ、クライアントともMac OS X 10.3.2です。
0750nobodyさん04/03/11 01:00ID:???
>>749
スレ違い >>1-5 を読め
0751nobodyさん04/03/11 02:09ID:???
いやこのスレでもいいとは思うが

しかし >>749 に書いてある情報だけで
「いったいなにがダメなのか教えてください!」と聞かれても
「あんたという人間自身がダメ」としか答えようがないよ

とりあえずエラーログでも見てみたらどうだ
「エラーログって何?」という状態だったら、自分でCGIを使うのは諦めたほうがいい
075274704/03/11 11:56ID:???
>>748
> "| naniwoyattenndai"
どうもヒントありがとうございます。

open Mail, "mail |" or die;
open Back, ">mail.back" or die;
while(<Mail>){print Back;}
close Mail;
close Back;

こんな風にやってみました。
とりあえず1個持ってきてくれましたが、

& Saved 1 message in mbox
Held 673 messages in /var/spool/mail/hoge

なんて事で、溜まりまくってます。
これmailコマンドになんか足してやれば、
未読メールは全部読む、なんて事にならないんでしょうか?
調べましたがわかりませんでした。

でも読んでmboxにセーブされるなら手元にprint
する必要ないですね。

なんかスレ違いになってきてますが、
すんませんがポインタでもお願いします。
0753nobodyさん04/03/11 22:32ID:???
>>748 は「.forward の中に | を書け」というアドバイスだと思ったんだが…
075474704/03/12 16:10ID:???
>>753
> >>748 は「.forward の中に | を書け」というアドバイスだと思ったんだが…

はい、気が付きました。
パイプで処理をプログラムに渡す、って事ですね。
いろいろやってみます。
0755nobodyさん04/03/21 19:08ID:???
フォームって、リターンキーで送信しちゃうと、ボタン名飛ばないんだね。
ボタン名がクエリに入ってたら処理を分岐してたオレはいったい…

どうしよ。
0756nobodyさん04/03/21 21:44ID:???
hiddenを使えばいいじゃない
0757nobodyさん04/03/21 21:56ID:???
複数のtype=submit があって、nameで分岐してるってことじゃないかな。

name無しの時に分岐のどの処理をさせるか、無効操作として再度フォーム表示するかどうか、
それさえ決めればよさそうな.....
075875504/03/22 11:38ID:???
>>756

hiddenでフラグ持たせとくかー
なんかすんごいアナログだけど
ボタン一個の時はこれしかないよね。

>>757

そそ。nameで分岐。
name無しは基本的にまたフォームに戻すんだけど、
リターンで送信されたときにもちゃんと飛ばせないトナーと思ったり。

1フォームにsubmitボタンが2個あるときってどうしてますか?
0759nobodyさん04/03/22 14:56ID:???
まずそういうインターフェイスを見直す。
0760nobodyさん04/03/22 15:59ID:???
>>759 ならどう見直す?
0761nobodyさん04/03/22 16:20ID:???
ラジオボタンで選択
0762nobodyさん04/03/22 16:43ID:???
>>761
現実的じゃないかも。
たしかにラジオボタンだと正確に取得できるが、
実際のフォームとかでそういうの見ないな。(むしろ使いにくい)
0763nobodyさん04/03/22 17:04ID:???
JavaScriptと<input type="button">組み合わせてOnClickでhiddenの中身を書き換える
0764nobodyさん04/03/22 17:15ID:???
>>763

JavaScript切ってたら
糸冬
0765asdf04/03/24 11:20ID:CibVmuL+
xreaの鯖を使用していますが、CGIが動きません。

#!/usr/bin/perl
# アクセスカウンタ

print "Content-type: text/html; charset=Shift_JIS\n\n";

# カウントファイルから読み込み
open(IN, "counter.txt");
$count = <IN>;
close(IN);

# カウント増加
$count++;

# カウントファイルに書き込み
open(OUT, "> counter.txt");
print OUT $count;
close(OUT);

print <<EOL;
<html>
<body>
<p>あなたは $count 人目のお客様です</p>
</body>
</html>
EOL

という死ぬほど簡単なCGIなのに。ファイル名はcounter.cgi
あと、0とだけ書かれたテキストファイルcounter.textをおく。
0766asdf04/03/24 11:21ID:CibVmuL+
http://ponk.jp/perl_bbs/index.php?page=2
ここのCGIです。

print <<EOL;
<html>
<body>
<p>あなたは $count 人目のお客様です</p>
</body>
</html>
EOL

を

print"
<html>
<body>
あなたは $count 人目のお客様です
</body>
</html>
"

としたらうごいたけど・・

何が原因なの?
ほかにもいっぱい動かなくて、CGI開発行き詰ってるYO!
0767asdf04/03/24 11:24ID:CibVmuL+
http://diary.asdf.jp/counter.cgi
↑動かないカウンター

http://diary.asdf.jp/a.cgi
↑動くカウンター

違いは>>766のとおり
0768nobodyさん04/03/24 12:36ID:???
>>766
> 何が原因なの?
> ほかにもいっぱい動かなくて、CGI開発行き詰ってるYO!

エラーログ見るとか、
チェック用CGIで探るとか、
use CGI::Carp qw(fatalsToBrowser);
するとか、ああとかこうとか、すれよ。
ばかかお前。
勝手に行き詰れよ、あほ。
メーワクだから開発なんかするな、
ちゅうか、カイハツ?それ。
設置じゃねえか、それ。
0769nobodyさん04/03/24 14:21ID:???
>>766
とりあえず駱駝本を読んでください。
話はそれからです。
0770nobodyさん04/03/24 17:22ID:???
なぜか初心者は、単なる設置作業を「CGIを作る」と表現するんだな。
しかし普通は「作る」といったら自分でソースを書いて制作することを指す。
回答側はその前提でソースやコーディングをアドバイスすると、分からんとほざく。
いいかげんにしろと。
0771nobodyさん04/03/24 19:38ID:???
甑を思い出したさ
0772nobodyさん04/03/24 21:07ID:???
フォームページ(HTML)からHTTPSのCGIにPOSTした際に、
たまーにフォームから送信したはずのクエリがCGIで取得できなかったりするんだけど、
この症状について誰かご存知の方いますか?

wwwはapache, ブラウザはIE6です。
0773nobodyさん04/03/29 23:04ID:???
復帰乙。
077477204/04/04 12:06ID:???
自己レス

「Wininet により空白のヘッダーのみの POST 要求が再送される」
ttp://support.microsoft.com/default.aspx?kbid=831167

激しくこれな気がしました。
SSL+POST時におけるIE6のバグっぽいですね。
IE6だからどうりで今まで正常に動いてたわけだ。

GETにするしかないのかなぁ…
0775Perl+XHTMLユーザ04/04/06 18:50ID:BdnN1EXa
CGIを作った際に困った・・・のでこちらで質問です
print <<"_EOD_";
Content-type: text/html

<html lang="ja">
<head>
(略)
_EOD_
などとすると、<html lang="ja">の前に改行が入ってしまいます。
また、かといって
print <<"_EOD_";
Content-type: text/html
<html lang="ja">
<head>
(略)
_EOD_
などとするわけにもいかず・・
これは仕様上やむを得ない事なのでしょうか?
0776nobodyさん04/04/06 19:00ID:???
CGIとは無関係。 >>1
0777nobodyさん04/04/07 11:39ID:???
777get, zuzaa
0778nobodyさん04/04/10 11:10ID:brO2qLuh
Perlで掲示板を作成中。

パスワードをcookieに記録すると丸見え。でもユーザーが毎回パスワードを入力
しないようにしたい。
ささやかな抵抗として以下のロジックを実装してみた。

1.cookieには自分を自分自身でcryptして頭2文字を除いたものを記録
2.記事には1をランダムな種でcryptしたものを記録
3.投稿時にパスワードをcookieから取得したのならその文字列をそのまま
 記事に記録されたパスワードとチェック。
4.投稿時にパスワードがcookieから取得されたものでなければ、1と同様の
 処理をしてから、記事に記録されたパスワードとチェック。

なにか問題があるだろうか。

もしくはもっといい方法を知っていれば教えてくれ。
0779nobodyさん04/04/10 15:36ID:???
>>778
>>1
0780nobodyさん04/04/10 17:18ID:???
「cookieに記録すると丸見え」というのがよく分からない。
XSSを危惧してのことならXSSをさせないこと自体が重要。

せいぜい数文字程度の強度しかないユーザーパスワードを種にするより、
管理者が20文字くらいのcryptを勝手に発行してCookieで食わせたほうがいいのでは?
ユーザーがCookieを削除してしまえばそれまでだけどね。

そもそも記事に記録するcryptは見せる必要がない。
不安なら管理者が設定した秘密の種で再cryptして記録する。
0781nobodyさん04/04/10 18:05ID:???
> 「cookieに記録すると丸見え」というのがよく分からない。
> XSSを危惧してのことならXSSをさせないこと自体が重要。

想定しているのは外部からのアクセスではなく、PCを他者に使われるような環境。
例えば会社のPCとか、ネットカフェのPCで、cookieを無条件で喰わせる様な掲示板
だと、IEのキャッシュを見るなり、cookieを見るなりすると、HNとパスワードが一発で
ばれる。
独特なHNであれば、googleで調べて、書き込んでいる掲示板を特定することも
できる。まあ、自己責任といえばそうだけど。
掲示板ごとにパスワードを変えるのも大変だし、対抗手段としてプレーンなパスを
見えなくすれば、気休めになるかな、という流れ。
0782nobodyさん04/04/10 18:29ID:???
>>781
Cookieをファイルとして残せば、その端末を使えるユーザーはすべて同等の扱い。
パスワードをcryptしても別の端末からのログインをやりにくくさせるくらい。
→やはり気休め。

最低1度はパスワードを手動で入力させて、
セッションで楽させてあげるまでが限界かの。
0783nobodyさん04/04/10 19:00ID:???
>>782
そだよねー。
まあ気にしているのはその掲示板に書き込まれたりすることじゃなくて、cookkieから
パスワードの傾向を読み取られて、もっと重要なパスワードを推測されることだから、
ロジックとして穴でなければ実装したほうがいいかな。
自分では掲示板系と重要なパスワードは明確に区別してるけど。

とはいっても私の作ったのだけがそうでもあまり意味ないので、これがポピュラーな
手法になるといいな・・・と期待してみたり。

「パスワードをcookieに記録する」というチェックボックスを投稿フォームに設けて、
ユーザー名やらなんやらだけ記録させるのも選べるようにしよう・・・。
0784nobodyさん04/04/10 19:33ID:???
つまり「頭2文字を除いたものを記録」というのは、
種となっているパスワードを隠蔽するためだったね。

2文字だと候補が少なすぎて容易にパスワードを予測されてしまうから、
せめて10文字くらいは削ったほうがよいかと。

cryptロジックが公開されていない(もしくは管理者がもつ秘密の種の強度が高い)
という条件なら、候補を出すこと自体もそれなりに難しくはなるけどね。
0785nobodyさん04/04/14 20:05ID:???
Perlコーディング初心者質問コーナーから誘導されて来ました。

CGIで出力させたリンクが思ったように動かないのです。

Perlで組んだCGI(test1.cgiとします)から
<a href="http://○○○/test2.cgi?item1">アイテム1</a> が出力されるようにし
ブラウザ上の「アイテム1」をクリックすると、確かに test2.cgi が起動するのですが
環境変数の一部が渡っていかない感じで、「item1」というデータが取得できず
望みの結果が得られません。

リンクを含んだデータが表示されている時点で、「ソースを表示」して別のHTMLファイルに保存し
別個に起動すると、そこからリンクした場合はちゃんと test2.cgi に item1 が渡っています。
右クリックから「ショートカットをコピー」して アドレスバーに貼り付けてやってもやはり問題なしです。

どうも、NT+IIS のサーバーでこういう現象になり、 AN HTTPD だと問題ないのですが
既知のトラブルなのでしょうか?
0786nobodyさん04/04/14 22:52ID:???
>>785
・test2.cgi にジャンプしようとする時,ステータスバーにはどう表示されているか?
・ジャンプ後,アドレスバーにはどう表示されているか?
っていう辺りに興味があります。。。
■ このスレッドは過去ログ倉庫に格納されています