Next Page

1

Previous Page

スレッド: を使用した際に、ID/パスワードにコロンが含まれる場合

作成日: 05/27/08 01:01 PM

返信: 3

sussussu


長老


入会日: 05/31/07

投稿数: 153

を使用した際に、ID/パスワードにコロンが含まれる場合
05/23/08 5:49 PM

<cflogin>を使用した際に、ユーザ名またはパスワードにコロン":"が含まれる場合で
j_usernameおよびj_passwordがcflogin構造体に格納される際に、コロンが区切りと判断されてしまう問題に遭遇しました。

Web サービスのセキュリティ保護

ユーザー名とパスワードはコロンで区切られ、base64 バイナリ形式でエンコードされた文字列として authorization リクエストヘッダに挿入されます。 このユーザー名 / パスワードの受け渡し方法は、Web サーバーによって使用される HTTP 基本認証メカニズムと互換性があります。

基本認証でもコロンはセパレータとして扱われているようなので、
バグとも仕様ともとれる挙動だし、禁則文字にしてしまうのが手っ取り早いと思っているのですが、
対策などをご存知の方がおられましたら宜しくお願いします。m(_ _)m

<!--- 検証用 --->
<cfdump var="#Form#" label="Form">
<cflogin>
  <cfif IsDefined("j_username") and IsDefined("j_password")>
    <cfdump var="#cflogin#" label="cflogin">
  </cfif>
</cflogin>

<cfform name="theFormName" method="post">
  <input type="text" name="j_username">
  <input type="password" name="j_password">
  <input type="submit" value="submit">
</cfform>

----------------
suss:::-D::ussu
----------------

Link | Top | Bottom

sussussu


長老


入会日: 05/31/07

投稿数: 153

Re: を使用した際に、ID/パスワードにコロンが含まれる場合
05/27/08 4:04 PM

自己レスです。

これと言った情報が見つからなかったので、下記の様な感じでコロンをエスケープして回避しました。

<!--- 最初にユーザ名とパスワードに含まれる":"をエスケープしておく --->
<cfif IsDefined("j_username") and IsDefined("j_password")>
  <cfset j_username = Replace(j_username, ":", "hoge", "all")>
  <cfset j_password = Replace(j_password, ":", "hoge", "all")>
</cfif>

<cflogin>
  <!--- cflogin構造体を参照する箇所では、エスケープされた":"を元に戻すReplace()を行う --->
</cflogin>

リファレンスの<cflogin>の項に書いておいてくれたらなぁと(^^;

----------------
suss:::-D::ussu
----------------

Link | Top | Bottom

katz


一人前


入会日: 05/31/07

投稿数: 140

Re: を使用した際に、ID/パスワードにコロンが含まれる場合
05/27/08 9:08 PM

Replaceだと、置換後の文字列と同じ文字列が置換前の文字列に含まれていた場合に問題が起きるので、UrlEncodedFormat()とURLDecode()を使うと良いかと思います。

Link | Top | Bottom

sussussu


長老


入会日: 05/31/07

投稿数: 153

Re: を使用した際に、ID/パスワードにコロンが含まれる場合
05/27/08 10:01 PM

おぉ、確かに!!
コロンだけを全角文字にでもしてしまおうかと思ってましたが、その方がスマートですね。

勉強になりました。感謝です。:::pint:::

----------------
suss:::-D::ussu
----------------

Link | Top | Bottom

Next Page

1

Previous Page

新規投稿

ログイン して返信して下さい。