トップページ⇒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 あたりに
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 にジャンプしようとする時,ステータスバーにはどう表示されているか?
・ジャンプ後,アドレスバーにはどう表示されているか?
っていう辺りに興味があります。。。
0787nobodyさん04/04/14 23:02ID:???
>786
785です。

WEB環境は勤め先なのでうろ覚えですが、

リンク文字にマウスカーソルをもっていったときステータスには

http://*****/test2.cgi?item1

と表示されていたように思います。

ジャンプ後のアドレスバーは明日確認してきます。
0788nobodyさん04/04/15 09:46ID:???
>>785
環境変数をすべて出力するスクリプトで、リンクから呼んだ
ときにちゃんと渡っているかどうかチェックしてみりゃいいじゃん。

あと、本気で解決する気があるのならNT+IISなんて書き方はしねーよ。
環境にしろ、問題になっている箇所にしろ、もっと具体的に
書くのが当たり前。

なんにしてもここは質問スレじゃないしスレ違い。
誘導自体が間違い。
0789nobodyさん04/04/15 17:23ID:???
785です。

Env.plというのでやってみたら、渡っている環境変数は半分くらい。
QUERY_STRINGもCONTENT_LENGTH も行ってませんでした。

スレ違い申し訳ありませんでした。
0790nobodyさん04/04/16 22:56ID:???
すみません、785です。解決したので報告です。

お恥ずかしい初歩的なミスですが、?の後のクエリーを全角文字で書いてました。

受け側もデコードとかしてなくて、それでもクエリーはちゃんと読めて、思ったとおりの
HTMを出力していたのですが、その時点で正常ではなかったようで、そこから飛ぶ
先の環境変数が壊れていました。

お騒がせしました。
0791nobodyさん04/04/17 16:00ID:ksEVTWBi
誘導されてきました。

GETやPOSTでデータを渡すとき、通常だと
「&」 … @pairs = split(/&/,$buffer);
と
「=」 … ($name,$value) = split(/=/,$pair);
でデータ切ると思いますが、これを別の文字にできますか?

「&」を「<>」とかに替えてみて、GETだと出来たんですが
POSTで渡すとき強制的に「&」になるようでデータを渡せませんでした。

POSTの時「&」意外にする方法はあるのでしょうか。
お願いします。
0792nobodyさん04/04/17 16:09ID:???
>>791
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4
0793nobodyさん04/04/17 16:11ID:???
>>791
W3C的にはgetの区切り文字は「;]が推奨されている。

Postの方は変えようがない。
0794nobodyさん04/04/17 16:31ID:???
>>792 >>793
そうですか・・・ありがとうございました。
別の方法を考えます。
0795nobodyさん04/04/17 18:01ID:???
なんでそんなことをする必要があるのか理解できん・・・
0796nobodyさん04/04/17 18:12ID:xkVKwnfm
今通販HP作成してまして
注文ページ1(HTML)で商品選択
注文ページ2(perlcgi)で選択商品の確認+住所等の入力
注文ページ3(perlcgi)で選択商品、住所等の確認
というページを作っていますが、ページ3でページ2に記入漏れがあった場合に
戻るボタンから戻る事を可能としたいんです。普通CGIのページでは戻ったり進んだり
できませんよね?、でも他サイトを見て回っていたらどうやらページ3からページ2へ
戻ることが可能になってるところもありましたので、私もやりたいのですが
調べても方法がわからないまま一日がもう終わりそうなので++;頼りにきてしまいました。
お願いします。

0797nobodyさん04/04/17 19:57ID:???
戻るボタンつーのはブラウザの戻るボタンかね?
それとも戻るボタンつーのを作ったのかね?
079879604/04/17 20:01ID:xkVKwnfm
レスありがとうございます。もどるボタンはhistory.back()でやろうと思ってますので
機能的にはブラウザの戻るボタンと同じです。
079979604/04/17 20:02ID:???
久しぶりに来たのでずっとsage忘れてました。ごめんなさい。
0800nobodyさん04/04/17 21:24ID:???
>>796
ページ3の戻るボタンでページ2にサブミットし直す。
ページ2の方では、ページ3から戻ってきたとき用のコードを書く。
ただそれだけ。
0801nobodyさん04/04/17 21:45ID:???
すいません、質問させてください。

あるサーバのCGIから別のサーバのCGIに
リダイレクトしつつ、POST送信することはできますか?

Location: http://aiueo/aiueo.cgi?name=value
だとGETになっちゃうので、これをPOSTで送りたいです。

意図としては、上記方法だと、送信データが
ブラウザのアドレスバー表示されてしまうので、
これをなんとか隠したいって感じです。

同じサーバ内ではセッションを使えばできますが、
何せ別のサーバへの送信になるので。。。

ご教授お願いします。
080280104/04/17 21:46ID:???
×アドレスバー表示
○アドレスバーに表示

でした。失礼。。。
080379604/04/17 21:52ID:???
>>800さんどうもです。
でもそれだと3〜2〜3〜2〜3〜2って何度も繰り返せないんですよね。
私の記述のしかたが悪いのかもしれませんけど、2〜3〜2〜3ってループする度に
ページ3に付けたhidden名の中にhidden名・・・・・で最後にページ1からの値。
みたいな感じになっちゃうんですよね。
とりあえず私が見た戻るを可能にしていたサイトではどうやらsubmitしなおしや
hiddenでリレーするようなのではないようで、普通にブラウザの戻るボタン
で戻れるようになってました。なので延々ループしても問題もないです。
なんかものすごく単純なコマンドがあるのかなって思ってましたけど・・・
「セキュリティ保護のため情報を再送信しないと表示をできません。情報を再送信しますか」
みたいな事を聞かれますが、それを自動でやらせる事ができる記述があるのかな?
みたいに思ってましたが・・・う〜ん。
0804nobodyさん04/04/17 22:25ID:???
>>801
a. CGI プログラム内で相手サーバに POST リクエストを
 送って結果を受け取り、それをブラウザに返す。

b. CGI プログラムで送信したい値を埋め込み済のフォームを
 生成し、ユーザに submit させる。
0805nobodyさん04/04/17 22:41ID:???
>>803
3>2>3>2が繰り返せないのは単純に作りがへぼいだけ。
このコーディングを説明されないと書けないようなら向いてないから
辞めた方がいい。

あと、hidden項目なんぞ使わなくてもCookie使うなりDB使うなりでも
いいのだが。

とりあえず勉強し直せ。
あと、その際は基本も読んでおけ。
www.ipa.go.jp/security/awareness/vendor/software.html
080680104/04/17 23:01ID:???
>>804

レスありがとうございました。

a. なんですが、確かにLWPモジュールなんかで
結果を受け取ってそれをブラウザにprintすればいいんですが、
その時ブラウザのアドレスバーには
送信元のサーバのURLが表示されますよね?
送信先のサーバが表示されていなければいけないんです。
(そういう意味でリダイレクトという表現をしました)

b. については確かにそうなんですが、
JavaScript を使って onLoad で送信したり、
一度ユーザにボタンを押してもらう方法では
ちょっと厳しいかなーと思ってます。
JSを無効にしていたり、重要なデータになると、
HTMLソースをいじられる可能性があると問題なので。

そういう意味ではサーバをまたがったセッションになるわけですが、
何せ送信先のサーバのCGIはこちらからではいじれないので。。。
080779604/04/18 10:28ID:???
>>805
作り方の問題ですか。
ところでDBていうのはDataBaseの略ですか?DBっていうものをほとんど理解してないので
色々サイトを回ろうと思います。
0808nobodyさん04/04/18 11:51ID:???
>>806
重要なデータは扱うべきではないと思いますけど気のせいかな
080979604/04/18 17:27ID:???
なんとかCOOKIEをつかってのsubmitしなおしで注文の引きつぎできるようになり2>3>2>3の
繰り返しもできるようになりましたが、もっともっと勉強が必要みたいです。
また来ます。
081080104/04/18 22:47ID:???
>>808

扱わざるを得ないとしたら、
この方法だと手詰まりですかね。。。(汗
0811nobodyさん04/04/19 00:22ID:dIBR14RC
LWPモジュールを使っていろいろと試して遊んでいます。
で、質問なのですが、
proxyを設定するために

use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->proxy(http => 'aaa.aaa.aaa:80');
$req = HTTP::Request->new('GET',"http://www.google.com");
$res = $ua->request($req);
print $res->content;

としたのですが、何も表示されません。
プロキシが生きていることは確認しました。
どうすればよいですか?
0812nobodyさん04/04/19 00:48ID:???
>>811
本当に何も表示されないんだったら俺の手にも負えないな

ちなみに俺のところでそのコードをそのまま実行したら
501 Protocol scheme 'aaa.aaa.aaa' is not supported
と表示されたよ
081381104/04/19 01:37ID:???
さっきは何も表示されなかったはずなのに、も一度やってみたら、
501 Protocol scheme ' ' is not supported
だそうで。
プロキシのアドレスにスキームhttp://を追加したらうまくいきました。
てかHTTP::Lite使った方がいいじゃん。
失礼しましたm_ _m
0814nobodyさん04/04/19 01:45ID:dIBR14RC
perlでのhttpアクセスにおいてリファラを任意に設定することは
できないのですか?少し前質問スレで無理って結論されていた
のですが、本当に無理なのですか?
身近なところでiriaなんかもリファラ設定できますよね?
あと、win32api使えばできたような・・・・
0815nobodyさん04/04/19 02:03ID:???
>>814
できます
0816nobodyさん04/04/19 07:23ID:???
>>814
プロキシかブラウザを作るしか。

(IEコンポーネントを利用した等の)ブラウザ作ればいくらでも可能。
CGIじゃないけど。
081781404/04/19 09:29ID:???
>>815さん、それはperlだけで可能ということですか?
具体的にどうすればよいのでしょうか?プロキシを作ればできるという意味ですか?
それともソケットをいじるだけでできるものなのですか?

>>816さん、できればperl単体でやりたいのですが、なんとかならんでしょうか・・・
0818nobodyさん04/04/19 10:45ID:???
ん?
Referer: ヘッダ付ければそれで済むことやん。
0819nobodyさん04/04/19 12:06ID:???
>>816
httpの仕様をよく勉強しましょうね
082081404/04/19 12:37ID:???
>>818
その通りでした--;
一連の流れでてっきりperlではリクエストヘッダいじれないものだとばかり・・・・
http://member.nifty.ne.jp/hippo2000/perltips/HTTP/Request.html
↑らへんを参考にやればちゃんとできました。
use LWP::UserAgent;
require HTTP::Headers;
$ua = LWP::UserAgent->new;
$h = new HTTP::Headers;
$h->user_agent('momomo');
$h->referer('http:://localhost.com/');
$req = HTTP::Request->new(GET,'http://www.taruo.net/e/?',$h); #確認用に診断くんへアクセス
$res = $ua->request($req);
でも一つ分からないことがありますので最後に質問させてください。
解説ではHTTP::Requestオブジェクトの生成時に指定する引数の3番目にHTTP::Headersオブジェクト
へのリファレンスを指定せよとあったのですが、\$hとしたらエラーになってしまいました。\をはずした
らうまくいきましたが、これって問題ないのですか?それとも僕の頭がおかしくて勘違いしてる?
0821nobodyさん04/04/19 12:57ID:???
>>820
おかしくはないけれども後者。リファレンスのリファレンスだからね(^・^)チュッ
082281404/04/19 13:18ID:???
>>821
$hはもともとリファレンスだったのですね。
よく分かりました。ありがとうございます。
・・・・・・ブチュ
082381404/04/19 14:53ID:???
何度もすみませぬ。
LWPを使ったアクセスを診断くんで確認したところHTTP_TEなる環境変数を
吐いているようで、んでもってHTTP_TEはプロキシ判定材料の一つなそうな。
もともとwebや掲示板等を巡回するようなツールを想定していたのですが、
こんなものを吐いていたら一部の厳格なプロキシはじきを通れません><
で、消してしまおうと思い。
$h->remove_header('te');
の一文を挿入したのですが、消えてくれません。書き方がまずいのかと思い、
teをHTTP_TEにしてみましたが変化なし、別の環境変数(referer等)はちゃんと
消せました。(user_agentは無理でしたが(そらそうか))
アドバイスお願いします。
082479604/04/19 15:31ID:???
「このページは他人に見られることのないように保護をされています。」

っていう通販HPの注文ページを見かけますが、私も自分のHPに保護をしたいページ
があるのでできるように勉強したいのですが、何について勉強すればいいのかわかりません。
今までhtml,javascript,perl等はいろんなホームページを回って勉強しましたので
今回もどこかのHPで勉強しようと思ってますが、どこかおすすめありませんか?
なにぶんどんな技術なのか言語がなんなのかさっぱりわかりませんので、どうゆう
キーワードで検索をかければいいかわかりません。どうぞよろしくお願いします。
0825nobodyさん04/04/19 15:49ID:uFMZjudZ
>>824
https ssl
0826nobodyさん04/04/19 15:52ID:???
>>823
俺も同じことやろうとして、消せなかったんでめんどくさいけどSocketモジュール使った。
消す方法があるのなら俺も知りたい。
0827nobodyさん04/04/19 16:59ID:???
>>823

$h = new HTTP::Headers;
sub HTTP::Headers::AUTOLOAD {
(shift->_header($1, @_))[0] if $HTTP::Headers::AUTOLOAD =~ /::([a-z_]\w+)$/;
}
$h->te('');
$h->chubou('教えてください');
$h->kami('俺にまかせろ');
$h->chosakuken('消すよ♪');

$ENV{'HTTP_TE'}をundefにしたければHeaders.pm書き換えないと無理っぽい
0828nobodyさん04/04/19 17:06ID:???
sub remove_header
{
 my($self, @fields) = @_;
 my $field;
 my @values;
 foreach $field (@fields) {
  $field =~ tr/_/-/ if $TRANSLATE_UNDERSCORE;
  my $v = delete $self->{lc $field};
  push(@values, ref($v) ? @$v : $v) if defined $v;
 }
 return @values;
}

だそうです。。。
082979604/04/19 18:32ID:???
>>825
ありがとうございます。
ところで例えばp1で住所等個人情報入力フォームがあり
p2で入力した内容の確認ができ、p3でそれを送信するといった場合に、
p1で入力された情報をp3まで引き継ぐ必要があるわけですが、どうやって
その入力データの引き継ぎをするのが理想的でしょうか?私が今できる事と言ったら
hiddenかcookieを使っての引継ぎくらいですが、セキュリティ的にどちらでするべきか
迷っています。どちらにしろSSLで保護はしますので安全だろうと思ってますが自信がもてないので
アドバイスお願いします。
cookieの場合ブラウザに個人情報がブラウザが閉じるまで?もしくは任意の時間残ってしまいますよね?
hiddenはソースを開けば見れる。←これは問題ないですよね?
083081604/04/19 19:23ID:???
>>814
質問スレの流れからrefererを偽装する話だと思ったら、
クライアントを作る話か。こんちくしょうって感じ。
以下、UserAgentバージョン2.024で動作したスクリプト。

use LWP::UserAgent;
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, ('SendTE' => 0));

my $ua = LWP::UserAgent->new(agent=>'My-crawler/1.0');

my $url = 'http://192.168.0.11/~test1/env.cgi';
my $referer = 'http://example.net';

my $response = $ua->get($url, referer=>$referer);
($response->is_success) or die 'response: ',
$response->code, ' ', $response->message;
print $response->content;
exit;

# httpが分かれば、直接IO::Socket::INETの方が便利。

>>819
もう一度rfc2616を読んでおくよ。
083181604/04/19 19:26ID:???
あ、urlを替えるの忘れてた。
適宜変更してね。
083281404/04/19 21:17ID:???
>>830
できました!本当にありがとうございました!もうちょっといじってからSocket
でもやってみようと思います(無理か・・・・w
refererの存在って例のITmediaの一件以来かどうかはしらないけどいまいち
存在意義がないような・・・出力をクライアントに依存するせいでいくらでも偽装
できるし、そもそも最近のセキュリティツールはreferer自体吐かないようになっ
てるのも多いし。refererを何かの判定に使おうとしたら結局ユーザビリティ低下
させるだけなのかな。
0833nobodyさん04/04/19 21:41ID:???
>>829
あのさぁ、この前紹介したページ見た?
というか、Webセキュリティについて何も知らないのが明らか
なんだから、こんなところで一つ一つ質問していないで、
一から勉強しなおせ。

今のまま個別の実装の仕方を覚えたところで穴だらけの
駄目通販サイトができるだけ。
まぁ、素人の作った通販サイトなんてそんなもんだが。
083479604/04/19 23:10ID:???
>>833もちろんありがたく見させてもらってます。htmlの勉強始めてから1ヶ月
くらいで、勉強自体はずっと進行形です。HPとかは一方的なのでわかったり
わからなかったりするので、ここで行き詰まった部分のアドバイスをもらうと
他のわからなかった部分も理解できたりするもので。2chってhow toのいい掲示板だなあ
と思ってましたが、あまりにも私の話はレベルが低すぎて迷惑ですかね。
レベル的に軽いスレ違いですね;私くらいの人間が行っても迷惑にならないスレって
ありますか?
0835nobodyさん04/04/20 15:07ID:???
>>834
ありません。まず日本語勉強してきてね。
0836nobodyさん04/04/20 17:31ID:???
>>834
趣味でやってるようなものならともかく、通販みたいに商売でやるものを
素人がわからないで手を出すなよ。
金を払って作ってもらったものを参考にとか、仕組みを完全に理解するまで
勉強してからやれよ。
0837nobodyさん04/04/20 17:42ID:???
サイトやスクリプトの「素人っぽさ」って、案外簡単に感づかれるよ。
「絶対に誰にも何も聞かずに自分ですべて調べて1からシステムを構築できる」レベルになるまで
そういうのには手を出さないほうがいい。
0838nobodyさん04/04/20 20:19ID:???
>>837
素人っぽさってどう言う所で判断してる?
俺の場合、何がどうと言う事ではなくエディタで開いて3秒くらいで
ゴミ箱行きかどうか決めてるけど。
0839nobodyさん04/04/20 23:11ID:???
use strictだろ。 Perlなら。
0840nobodyさん04/04/21 00:43ID:???
確かにモジュール関係の記述は目安になるな
0841nobodyさん04/04/21 23:43ID:???
>>829
そういう重要な情報はサーバーサイド(通常はDB)に保存し、
Cookieやhiddenにはそれにアクセスするためのキー情報のみを
セットする。そういうのを一般的にセッション管理という。
総当り方式等でセッションをハイジャックされないような仕掛けも必要。
迂闊に手を出さない方が良いと思う。
084279604/04/22 10:47ID:???
おはようございます。完全に勉強してからつくるではなくて、勉強しながらつくって
完全に理解できたときに完成と認めてスタートさせようと思ってます。とりあえず
CGI部分の機能はできた?ので、今はちょっとデザイン部分をやってます。
>>829ありがとうございます。凄い参考になります。その路線をがんばって勉強します。
本当ありがとうございます。
0843nobodyさん04/04/22 11:03ID:???
>>842
もう来るな
0844nobodyさん04/04/22 13:24ID:???
>>843
真面目に勉強したなら、もう来る必要がなくなくなるからご安心を(w
0845nobodyさん04/04/23 14:57ID:???
自作モジュール使ったCGIを配布、もしくは設置したけど
モジュールのソースを公開したくない時ってどうしてます?
(モジュールファイルをアップしたくない)

自分管理のサーバ内にモジュールを置いておいて、
外部サーバからLWPでGETさせてevalで利用ってのを考えてみたけど…。
でもそれってCGIソースからモジュールのURL知られてDLされたらおしまいか。
使い勝手も悪そうだし、毎回負荷がかかっちゃうのも問題かー。うーむ。
0846nobodyさん04/04/23 15:03ID:???
>>845
誰も見ないから安心して公開してください。
084784504/04/23 15:09ID:???
>>846
それ言われるとお終い。
0848nobodyさん04/04/23 15:51ID:???
なんか「ホームページのソースを見せたくない」に似てるな。
0849nobodyさん04/04/23 17:01ID:???
そんなに恥ずかしいソースを書いてるのか
0850nobodyさん04/04/23 17:25ID:???
perl の場合なら

1. perlcc でコンパイルして配布する
2. perlapp でバイナリ化して配布する

どっちにしてもポータビリティは無くなるが
0851nobodyさん04/04/24 15:57ID:RLkwArNt
質問があります。

ttp://i-meishi.jp/design/flower.html

ここのように一つデザインを選んだら、次の注文フォームで
自動的にデザイン番号が入力されるようにするにはどうすれ
ばいいのですか?
フツーのフォームメールCGIでできますか?
よろしくお願いします。
0852nobodyさん04/04/24 16:44ID:???
値を渡せ。さすれば道は開けるであろう。
085385104/04/24 16:52ID:???
>>852

値を渡すとは

****.cgi?****=****

みたいなヤツですよね?
もう少し具体的に教えていただけないでしょうか?
厨ですみません・・・
0854サバティさん04/04/24 21:19ID:???
>>845
RPC でぐぐっちょみ☆
0855nobodyさん04/04/24 23:13ID:???
>>853
わからないなら無理だからあきらめな
■ このスレッドは過去ログ倉庫に格納されています