[#47747] [ruby-trunk - Bug #8995][Open] バイナリデータを文字列として encode! すると readbyte の結果が変化する — "hsbt (Hiroshi SHIBATA)" <shibata.hiroshi@...>

9 messages 2013/10/08

[ruby-dev:47775] [ruby-trunk - Bug #9045] URIに含まれるエンコードされたID/パスワードがデコードされない

From: "vmi (Motonori IWAMURO)" <vmi@...>
Date: 2013-10-24 02:33:45 UTC
List: ruby-dev #47775
Issue #9045 has been updated by vmi (Motonori IWAMURO).


>>sorah
> 他のメソッドもデコードしてくれる訳じゃないですしuser/passだけ特別扱いというのはどうも。

とは言え、サーバ側が良きにはからってくれるpath等と違ってuser/passwordは完全一致でないと許されないので、逆に特別扱いすべき、とも考えられます。

落とし所は以下のどれかでしょうか。

(1) 制約事項をドキュメントに明記し、現行のままいじらない。(下手にいじると #8979 みたいなケースと衝突しそうだし)
(2) URIエンコード/デコードするためのスイッチをインスタンス変数orメソッド引数に組み込む。(新規で使う場合は無駄に手間がかかる)
(3) setter/getterやらuserinfoとのやりとりやらURIのエンコード/デコードやらをきっちり追いかけて、正確な値を設定/取得できるよう考慮したパッチを作成する。(パッチの前後で仕様が変わるので、複数の処理系をサポートしているプログラムだと対応が面倒かも)

>>fumiyas

新規で使う場合は良いですね。ただ、今回の件はそもそもgemが動かないことが切っ掛けだったので……。
----------------------------------------
Bug #9045: URIに含まれるエンコードされたID/パスワードがデコードされない
https://bugs.ruby-lang.org/issues/9045#change-42588

Author: vmi (Motonori IWAMURO)
Status: Assigned
Priority: Normal
Assignee: akira (akira yamada)
Category: lib
Target version: 
ruby -v: 1.9.3p448
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


URI(プロキシ設定も含む)にID/パスワードを含めるとき、IDやパスワードに「@」や「:」等がある場合はURIエンコードする必要がありますが、uriライブラリがこれをデコードしてくれません。
そのため、認証プロキシでIDに「@」が含まれていると認証に失敗するなどの問題が生じます。

ソースを追っかけて uri/generic.rb の問題だろうというところまでは調べたのですが、user/passwordを取り扱う部分がたくさんあるので、何処でエンコード/デコードすればいいのかよくわからない状況です。

とりあえず手元ではdef user と def password に URI.decode_www_form_component を突っ込んでますが、たぶんこれでは片手落ちと思われます。


-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next