中田様、
いろいろとアドバイス等を有り難うございました。
楽そうな QUERY_STRING から取得したいと思います。
それから、社内LANなので楽をしてセキュリティとか考えていませんでした。
ちなみにリストの中から氏名を選んでもらい、自己流の認証でパスワードを入力してもらって、
それを ××.exe?氏名 で渡していました。そういえば他人になりすますことができますよね。
またユーザ認証やクッキーを勉強したいと思います。
川村さんへ追記
考えてみたら、人の名前はユーザ名ではないのですね。
「ユーザ認証やクッキー」のくだりは無視してください。
川村さん、
エンコードしなくても QUERY_STRING から取得するのでも大丈夫です。
argvの方は過剰防衛なので、近いうちに直します。
なお、引数は勝手に指定できますから、場合によっては入力.exe 自体がセキュリティホールになる可能性があります。
また、HTMLファイルの名前やHTMLファイルの中で人の名前などを直接使うと、もちろん他の人がそれを入力してアクセスできるということですから、あまり好ましくないようにも思います。
閉じたネットワーク内でユーザ数が少ない場合はあまり気にする必要はないとは思いますが、ユーザ認証やクッキーを使い、一度はパスワードやIDを入力させるのが一般的のように思います。
いろいろな方法を使ってみてそれぞれの得失を考えた方がよいでしょう。
中田さん、いしどうさん、
アドバイス有り難うございました。
10人位の氏名でデバッグし、たまたま読めたので、楽をしてそのまま渡して argv で取っていました。
これからは、?%92%7C の様にエンコードして渡します。
ちなみに、そこではある処理してから自動で次へ飛ばしたかったのですが、
フォームはユーザにワンクリック手間をかけるので使っておりませんでした。
>セキュリティ上の操作が過剰にかかってそうなってしまいますね。
私のように非常識な渡し方をしている者のために、
セキュリティ上の問題が起きたら申し訳ないので、修正はよろしいです。
失礼をいたしました。
川村さん、
セキュリティ上の操作が過剰にかかってそうなってしまいますね。
少し確認しないといけないことがあるので、その後で直します。
とりあえずは、いしどうさんが言うとおり、入力.exe?%92%7C というふうにURLエンコードをしてもらえば大丈夫です。
もちろん 入力.exe の方で%92%7Cを「竹」に戻す必要があります。CGIではそうするのが普通です。
また、普通のフォームを使って「竹」を入力すればブラウザが自動的に %92%7C とURLエンコードします。
やりたいことにもよりますが、フォームを使ったCGIも使えるようにした方がいいのではないかと思います。
>川村さん
それは無理もないのではないでしょうか。
「竹」の字の2バイト目、0x7c はパイプ記号 "|" になりますので、command.com に
渡すときに不具合が起きないとも限りません。
CGIのEXEファイルへは URLエンコードした文字列("%"の後に16進数2桁)
を渡すようにして、受け取ったCGIはそれを元に戻して本物のEXEファイルを呼び出す
ようにするといいんじゃないかな、と思いました。
(細かいことを言うと、英数字ではない文字列をURLエンコードしないままURLの中で
指定する、っていうのはRFCに従っていないので、なにか変なことが起きても文句が
言えないと思います)
先日は、UTF-8 対応の件でお世話になり、有り難うございました。
さて、また同様な問題で大変恐縮ですが、
<meta http-equiv='refresh' content='0; URL=入力.exe?竹※ ※※'>
の様にして「竹」の付く氏名を渡し、argv で取った時に限って、
「・」に文字化けしてしまいます。
charset は Shift_JIS を使っています。「竹」は S-JISコードで 0x927c です。
いろんな漢字で確認しましたが「竹」だけが文字化けしてしまいます。
第2水準もOKでした。
= と & で区切って、query_string で取ると、アドバイスを頂戴しましたが、
実は、argvで取っているプログラムを10程作っていまして・・・。
大変申し訳ありませんが、宜しくお願い致します。