Project

General

Profile

Bug(バグ) #1810

Yahoo! ケータイにおける SSL 仕様変更対応

Added by Kousuke Ebihara about 9 years ago. Updated about 4 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Target version:
Start date:
2010-11-25
Due date:
% Done:

100%

3.6 で発生するか:
Yes
3.8 で発生するか:
Unknown (未調査)

Description

Overview (現象)

2011年6月30日以降、
ソフトバンク携帯電話のSSL(Secure Sockets Layer)、TLS(Transport Layer Security)仕様変更にともない
現状のGWにリダイレクトしている処理が使用できなくなるため、
リダイレクト処理を取り除く必要があります。

(参考)
※http://creation.mb.softbank.jp/web/web_ssl.html

Way to fix (修正内容)

リダイレクトが必要かどうか判断するメソッドにおいて、
仕様変更以降は「リダイレクト不要」と結果を返すようにする


Related issues

Related to OpenPNE 3 - Bug(バグ) #2135: Yahoo! ケータイにおける SSL 仕様変更対応(絵文字) Fixed(完了) 2011-05-25
Related to OpenPNE 3 - Backport(バックポート) #2187: Yahoo! ケータイにおける SSL 仕様変更対応 Fixed(完了) 2011-06-10 2011-06-24
Related to OpenPNE 3 - Backport(バックポート) #2207: Yahoo! ケータイにおける SSL 仕様変更対応(絵文字) Fixed(完了) 2011-06-10 2011-06-24
Related to OpenPNE 3 - Backport(バックポート) #2241: Yahoo! ケータイにおける SSL 仕様変更対応 Invalid(無効) 2010-11-25 2011-06-24

Associated revisions

Revision ff145b36 (diff)
Added by Maki Takahashi over 8 years ago

changed for SSL specification change in SoftBank (refs #1810)

Revision 5076ddc2 (diff)
Added by Maki Takahashi over 8 years ago

Revert "changed for SSL specification change in SoftBank (refs #1810)"

This reverts commit ff145b3692e6aa0c5eb296cf3d1799cc3d30ec44.
This modification should be done within opWebRequest.

Revision 534dd33c (diff)
Added by Maki Takahashi over 8 years ago

changed for SSL specification change in SoftBank (refs #1810)

History

#1 Updated by Kousuke Ebihara almost 9 years ago

  • Target version set to OpenPNE 3.7.0

#2 Updated by Shingo Yamada over 8 years ago

  • Assignee set to Naoya Tozuka

#3 Updated by Naoya Tozuka over 8 years ago

  • ソフトバンク側の仕様変更:2011年6月末

Q6: 現行のGW中継SSL通信の終了時刻は、いつでしょうか?
A6: 2011/6/30 午前3時頃を予定しております。

#4 Updated by Shingo Yamada over 8 years ago

  • Assignee changed from Naoya Tozuka to Maki Takahashi

#5 Updated by Maki Takahashi over 8 years ago

  • Status changed from New(新規) to Accepted(着手)

#6 Updated by Maki Takahashi over 8 years ago

http://creation.mb.softbank.jp/web/web_ssl.html の「非SSL/TLS時との比較」
End-to-EndのSSL/TLS利用時は、非SSL時と比較して以下の点が異なります。
 ・文字エンコーディング変換(*1)を行わない
 ・独自拡張ヘッダ(*2)を利用できない
 ・ISO-2022絵文字(*3)を利用できない
*1:      Request URI とエンティティボディの EUC-JP、ISO-2022-JP → Shift_JIS への変換
*2:      x-jphone-color、x-jphone-display、x-jphone-msname、x-jphone-region、x-jphone-smaf、x-jphone-uid、x-s-bearer、x-jphone-copyright
*3:      「$G!」等の絵文字。Unicode数値文字参照形式の絵文字である「」等は利用可能
  • 文字エンコーディング変換についてはOpenPNE内で変換を行った後に出力しているため問題なし。
  • 独自拡張ヘッダについては「簡単ログイン」にて使用している(x-jphone-uid)ため、対応が必要です。
  • 絵文字についてUnicode数値文字参照形式を利用するように対応が必要です。
      絵文字( http://creation.mb.softbank.jp/web/web_pic_about.html )については
      先行対応が可能なため、別チケットにて対応します。

また、現在、GWを通さずに直接HTTPSのURLにアクセスした場合(メールのリンク、直接URL入力でアクセス)
GWにリダイレクトさせているので、その部分も修正が必要です。

#7 Updated by Maki Takahashi over 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

ff145b3 にて仕様変更される「2011/6/30 午前3時」を境に、GWへのリダイレクトをとりやめ
直接HTTPSリクエストとなるように修正しました。

実環境でのテストは仕様変更されなければ不可能なので、unitテストを作成して動作確認しています。

#8 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

一点フィードバックします。

SSL中継が終了しているかの判定箇所ですが、

strtotime('2011/6/30 03:00:00') > time() 
サーバ機のタイムゾーン設定が日本標準時(JST)以外に設定されている場合、時差のため終了判定が遅れ(あるいは早まり)ます。
ここは厳密に $spec_change_date を '2011/06/30 03:00:00 JST' あるいは '2011-06-30T03:00:00+0900' とし、strtotime() に時差を吸収してもらうと良いかと思います。

ちなみに、SSL中継の終了時刻は6月30日午前3時"頃"とのことなので、比較演算子は > でも >= でも構わないです。

#9 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Pending Fixing(修正待ち)

#10 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Pending Fixing(修正待ち) to Accepted(着手)

#11 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 70 to 50

#12 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

#13 Updated by Kousuke Ebihara over 8 years ago

追加で数点指摘します。修正をご検討ください。

  • $spec_change_date プロパティについて、
    • クラス定義の冒頭部分で宣言をおこなうようにしてください。これはコーディング規約にはない事項ですが、冒頭部分以外でのプロパティの定義はあまり一般的ではないと思います
    • プロパティ名は camelCaps で記述してください(http://www.openpne.jp/coding-standards-ja/#id11)
    • そもそも、 $spec_change_date という命名は適切とは言えません。 opExecutionFilter クラスは SoftBank の SSL 対応のためにあるクラスではないため、 $spec_change_date という名前を見ただけでは SoftBank の SSL 仕様変更を表すことが想像できません。携帯版における SSL 関連処理が opExecutionFilter に押し込まれて肥大化していることも原因の一端ではありますが、このプロパティについては SoftBank や SSL という語を含めるなどしてもう少し説明的にすることはできないでしょうか。あるいは、コメントで説明を加えることはできないでしょうか。
      • $spec_change_date の性格から言えば、この値をクラス定数で定義するのも悪くないと思います(修正の必要はないです)
  • 以下のコードはあまり直感的ではありません。 SoftBank の仕様変更後には、常に「SoftBank のゲートウェイへのリダイレクトの必要」はなくなるわけですから、 $spec_change_date と time() との比較は opWebRequest::needToRedirectToSoftBankGateway() のなかでおこなうようにするのがベターなのではないでしょうか(このメソッドに対してのユニットテストであればきっと書きやすいと思います/今回の修正分以外のテストも追加しなければならないという手間はありますが……)。
    if ((strtotime($this->spec_change_date) > time()) && $request->needToRedirectToSoftBankGateway())
    

#14 Updated by Maki Takahashi over 8 years ago

  • Status changed from Rejected(差し戻し) to Accepted(着手)

#15 Updated by Maki Takahashi over 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)

フィードバックに従いopExecutionFilter内で行っていた処理をopWebRequest内で行うように修正しました。

https://github.com/openpne/OpenPNE3/commit/5076ddc28602cd157a7927eac611987d487acbfb
にて、先の修正を取り消し、
https://github.com/openpne/OpenPNE3/commit/534dd33ce9f2fbb46f747c74fd7bce558be95ca6
にて、フィードバックに従って修正をいたしました。

  • $spec_change_date の性格から言えば、この値をクラス定数で定義するのも悪くないと思います(修正の必要はないです)

こちらに関してのみ、テストの都合で値を変更したかったので変数のままとしています(変数名は変更いたしました)。

実環境でのテストはやはり仕様変更前では不可能なので、すでに存在していたunitテストファイルにテストを追加して動作確認しています。

#16 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

修正確認しました。OKです。

#17 Updated by Mutsumi Imamura over 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
  • % Done changed from 70 to 50

チケットの説明の記述をお願いします。

#18 Updated by Maki Takahashi over 8 years ago

  • Status changed from Rejected(差し戻し) to Accepted(着手)

#19 Updated by Maki Takahashi over 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)

#20 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

チケットの説明の記述ありがとうございます。

#21 Updated by isao sano about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

テスト完了致しました。
問題ありませんので、ステータスを完了に致します。

#22 Updated by kaoru n about 4 years ago

  • 3.8 で発生するか set to Unknown (未調査)

Also available in: Atom PDF