プロジェクト

全般

プロフィール

Bug(バグ) #1810

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

Kousuke Ebihara13年以上前に追加. 8年以上前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2010-11-25
期日:
進捗率:

100%

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

説明

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 (修正内容)

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


関連するチケット

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

関係しているリビジョン

リビジョン ff145b36 (差分)
Maki Takahashiほぼ13年前に追加

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

リビジョン 5076ddc2 (差分)
Maki Takahashiほぼ13年前に追加

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

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

リビジョン 534dd33c (差分)
Maki Takahashiほぼ13年前に追加

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

履歴

#1 Kousuke Ebihara13年以上前に更新

  • 対象バージョンOpenPNE 3.7.0 にセット

#2 Shingo Yamadaほぼ13年前に更新

  • 担当者Naoya Tozuka にセット

#3 Naoya Tozukaほぼ13年前に更新

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

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

#4 Shingo Yamadaほぼ13年前に更新

  • 担当者Naoya Tozuka から Maki Takahashi に変更

#5 Maki Takahashiほぼ13年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

#6 Maki Takahashiほぼ13年前に更新

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 Maki Takahashiほぼ13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

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

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

#8 Naoya Tozukaほぼ13年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 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 Naoya Tozukaほぼ13年前に更新

  • ステータスPending Testing(テスト待ち) から Pending Fixing(修正待ち) に変更

#10 Naoya Tozukaほぼ13年前に更新

  • ステータスPending Fixing(修正待ち) から Accepted(着手) に変更

#11 Naoya Tozukaほぼ13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率70 から 50 に変更

#12 Naoya Tozukaほぼ13年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

#13 Kousuke Ebiharaほぼ13年前に更新

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

  • $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 Maki Takahashiほぼ13年前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更

#15 Maki Takahashiほぼ13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更

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

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

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

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

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

#16 Naoya Tozukaほぼ13年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

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

#17 Mutsumi Imamuraほぼ13年前に更新

  • ステータスPending Testing(テスト待ち) から Rejected(差し戻し) に変更
  • 進捗率70 から 50 に変更

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

#18 Maki Takahashiほぼ13年前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更

#19 Maki Takahashiほぼ13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更

#20 Naoya Tozukaほぼ13年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

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

#21 isao sano12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

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

#22 kaoru n8年以上前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

他の形式にエクスポート: Atom PDF