[#32727] require "./xxx" の「カレントディレクトリ」の意味 — Take_tk <ggb03124@...>

あるディレクトリαにあるスクリプトAに「require "./xxx"」と書いてあると、

21 messages 2001/12/03
[#32733] Re: require "./xxx" の「カレントディレクトリ」の意味 — matz@... (Yukihiro Matsumoto) 2001/12/03

まつもと ゆきひろです

[#32746] Re: require "./xxx" の「カレントディレクトリ」の意味 — Tanaka Akira <akr@...17n.org> 2001/12/04

In article <1007384829.854960.10474.nullmailer@ev.netlab.jp>,

[#32749] Re: require "./xxx" の「カレントディレクトリ」の意味 — Take_tk <ggb03124@...> 2001/12/04

たけ(tk)です。

[#32772] newdate — tadf@...

ふなばです。

108 messages 2001/12/04
[#32850] Re: newdate — Tanaka Akira <akr@...17n.org> 2001/12/10

In article <20011204234521G.tadf@kt.rim.or.jp>,

[#32855] Re: newdate — tadf@... 2001/12/10

ふなばです。

[#32859] Re: newdate — matz@... (Yukihiro Matsumoto) 2001/12/10

まつもと ゆきひろです

[#32860] Re: newdate — tadf@... 2001/12/10

ふなばです。

[#32889] Re: newdate — Tanaka Akira <akr@...17n.org> 2001/12/12

In article <20011210180612F.tadf@funaba.org>,

[#34281] Re: newdate — tadf@... 2002/03/10

ふなばです。

[#33661] when.exe の Ruby 化 (Re: newdate) — Takashi SUGA <suchowan@...> 2002/01/29

すいません。件名が変だったので、再送します。コメントをくださる方は、

[#32797] dir_config (mkmf.rb) のオプション指定の優先順位 — tamra@...

12 messages 2001/12/05
[#32798] Re: dir_config (mkmf.rb) のオプション指定の優先順位 — nobu.nakada@... 2001/12/06

なかだです。

[#32807] irb 0.8 release — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

21 messages 2001/12/07
[#32808] Re: irb 0.8 release — rubikitch <rubikitch@...> 2001/12/07

From: keiju@rational.com (Keiju ISHITSUKA)

[#32935] Ruby256 倍本 " 界道編 " — shukaku@...

23 messages 2001/12/15
[#32963] Re: Ruby256 倍本 " 界道編 " — Shin-ichiro HARA <sinara@...> 2001/12/19

原です。

[#33014] "Walrus" on LinuxJapan — Taku Nakajima <tnakajima@...>

中島@ブレーンです。

13 messages 2001/12/24

[#33050] cgi.rb で cookie の encoding について — Beyond <beyond@...>

74 messages 2001/12/28
[#33054] Re: cgi.rb で cookie の encoding について — "U.Nakamura" <usa@...> 2001/12/28

こんにちは、なかむら(う)です。

[#33057] Re: cgi.rb で cookie の encoding について — Beyond <beyond@...> 2001/12/28

[#33059] Re: cgi.rb で cookie の encoding について — nobu.nakada@... 2001/12/28

なかだです。

[#33060] Re: cgi.rb で cookie の encoding について — Beyond <beyond@...> 2001/12/28

[#33063] Re: cgi.rb で cookie の encoding について — nobu.nakada@... 2001/12/28

なかだです。

[#33065] Re: cgi.rb で cookie の encoding について — Beyond <beyond@...> 2001/12/28

[#33062] Re: cgi.rb で cookie の encoding について — Wakou Aoyama <wakou@...> 2001/12/28

青山です。

[#33075] Re: cgi.rb で cookie の encoding について — Takahiro Kambe <taca@...> 2001/12/28

In message <20011228054515.726.qmail@localhost>

[#33078] Re: cgi.rb で cookie の encoding について — Beyond <beyond@...> 2001/12/28

[#33083] Re: cgi.rb で cookie の encoding について — Wakou Aoyama <wakou@...> 2001/12/28

青山です。

[#33090] Re: cgi.rb で cookie の encoding について — Beyond <beyond@...> 2001/12/28

[#33105] Re: cgi.rb で cookie の encoding について — Wakou Aoyama <wakou@...> 2001/12/29

青山です。

[#33120] Re: cgi.rb で cookie の encoding について — Tanaka Akira <akr@...17n.org> 2001/12/30

In article <20011229013722.1869.qmail@localhost>,

[#33124] Re: cgi.rb で cookie の encoding について — Wakou Aoyama <wakou@...> 2001/12/30

青山です。

[#33131] Re: cgi.rb で cookie の encoding について — Beyond <beyond@...> 2001/12/31

[ruby-list:33104] Re: cgi.rb で cookie の encoding について

From: "TAKAGI, Hiromitsu" <takagi.hiromitsu@...>
Date: 2001-12-29 01:31:25 UTC
List: ruby-list #33104
もう少し考えてみました。エスケープ処理は結果オーライでやってしまうとセ
キュリティ上の問題を引き起こすこともあるので、どのようにするのが最も正
しいかというのは興味あるところです。

On Sat, 29 Dec 2001 08:52:36 +0900 
"TAKAGI, Hiromitsu" <takagi.hiromitsu@aist.go.jp> wrote:
> つまり、cookieにprintableでない文字を入れる場合、それをescapeするのは、
> そのコードを書く者の責任であるとするのが正しいと思います。

そもそも、escapeメソッドを使用する目的には次の2種類があるようです。

(1) その文字列を、特定の文字を使用できない場所で使用するつもりの場合に、
    その使用できない文字をescapeする。

    具体的には、例えば日本語の文字列を、URLやcookieなどのnon-printable
    な文字を入れてはならないところに入れる場合がこれに該当します。
    
(2) その文字列を、特定の文字がメタキャラクタとなっている文脈で使用する
    場合に、そのメタキャラクタと同じ文字をescapeする。

    具体的には、その文字列を、ある区切り文字(例えば「&」)で連結して
    使用する際に、区切り文字と同じ文字をescapeする。
    
これら2つの目的のために、同じescapeメソッドが使用されているわけですが
(JavaScriptのescapeメソッドもそうなっている)、本来この2つの目的には
別々のメソッドを用意すべきではないでしょうか。すなわち、

(1)の目的のために:

    使用できない文字だけをエスケープするメソッド。
    
    例えばURLの場合、RFCの定義に従って該当する文字だけをエスケープする
    と、「&」などはエスケープされない。この点で、現状の escapeメソッド
    とは異なる処理。
    
(2)の目的のために:

    引数に指定された文字だけをエスケープするメソッド。
    
    例えば「&」で連結する場合には、
       foo.cgi? + "aaa" + escpae("&", aaa_val) + "&" + "bbb" + escape(...
    のように、「escape("&", aaa_val)」と、その文脈におけるメタキャラク
    タを引数に指定する。

そして、これら(1)、(2)と直交して、どのようなエンコード方法でエスケープ
するかがあるわけですね。で、URLおよびcookieの場合は URL encode(%XX)
を使用することになっていると。

なので、

(1)のメソッドを例えば「url_normalize(source_string)」、
(2)のメソッドを例えば「url_escape(metacharacters, source_string)」
として準備しておき、

例えば cgi-lib.rb の

  def CGI::cookie(options)
    "Set-Cookie: " + options['name'] + '=' + escape(options['value']) +
    (options['domain']  ? '; domain='  + options['domain'] : '') +
    (options['path']    ? '; path='    + options['path']   : '') +
    (options['expires'] ? '; expires=' + rfc1123_date(options['expires']) : '') +
    (options['secure']  ? '; secure' : '')
  end

は、次にようにするのが妥当ではないかと。

  def CGI::cookie(options)
    "Set-Cookie: " + url_normalize(
      url_escape([':', ';', ' '], 
        url_escape(['='], options['name']) + '=' +
        url_escape(['='], options['value']) 
      ) + (options['domain'] ? 
        '; ' + url_escape([':', ';', ' '],
          'domain=' + url_escape(['='], options['domain'])
        ) : ''
      ) + (options['...
      ...
    )
  end

こうしておけば、valueに渡す文字列に事前にエスケープ処理は必要ないと。

それで、valueに複数のものを適当な区切り記号で連結して渡したいならば、
そういうデータ構造のためのクラスを用意して処理するのが良いのではないか
と。例えば、

  value = concatenated_values.new('|', p1, p2, p3)
  
として使用すると。(もしp1内に「|」が含まれているならエスケープされる)    
  


高木 浩光@独立行政法人産業技術総合研究所
http://staff.aist.go.jp/takagi.hiromitsu/

In This Thread