サポート » 使い方全般 » SSL導入後Warning: hash_equals(): Expected・・・

  • 解決済 hokutonojikei

    (@hokutonojikei)


    wordpressのサーバ移転、(WPバージョンも3.7.1→3.7.5)SSL導入、phpバージョン5.2→5.6にしたところ
    管理画面のクイック編集を行った時に以下のエラーが出るようになってしまいました。

    Warning: hash_equals(): Expected user_string to be a string, null given in/wp-includes/pluggable.php on line1301

    Warning: hash_equals(): Expected user_string to be a string, null given in/wp-includes/pluggable.php on line1307

    自分で調べてみたのですがhash_equals関数がphp5.6でタイミング攻撃を防ぐために追加された機能であること。
    pluggable.phpは上書き可能な関数がかかれていること。(ここにはhash_equals関数がないこと)
    wordpressでは3.9.2からhash_equals関数に対応になったこと。
    などは調べてみてわかりました。

    ただ以下のような疑問がどうしても解消できず
    皆様のお知恵をお借りしたく投稿させていただきました。

    ◆内部的に現状どのような状態になっているのか
    (記事一覧画面をリロードするとクイック編集の更新は正常に行われているが
    内部的にどこかに不具合が発生しているのか、例えばデータベースに不必要な値が増える等)

    ◆このエラーを解消or回避する方法、また回避した際のリスク。

    特殊なケースかもしれませんがお心当たりのある方がいらっしゃいましたら
    どうかよろしくお願いいたします。

    【備考】
    wp3.7を使用しているのは管理画面をcssでいじっているのが理由です。
    3.8からのレスポンシブ適用が一発で外せる関数なども探してみたのですが見つからず
    こういった理由で、時間を作ってバージョンアップはなるべく早くしたい考えです。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • 検証していませんが、このチケットに添付されているパッチ 29542.diff を真似ればよいのではないでしょうか。
    #29542 (hash_equals throws a fatal error (hhvm) when a nonce is sent as an integer) – WordPress Trac

    トピック投稿者 hokutonojikei

    (@hokutonojikei)

    gblsmさんご回答ありがとうございます。

    ご提示いただきましたページを参考にpluggable.phpの以下部分変更してみました
    function wp_verify_nonce( $nonce, $action = -1 ) {
    $nonce = (string) $nonce;←こちらを追加してみました。

    結果はクイック編集自体ができなくなり
    さらに画像添付ができなくなってしまいました。

    上記ページではPHPUnitを使用しているようですが
    やはりこのPHPUnit部分もどこかに追加しなければならないのでしょうか。
    またこれをphpのみでやろうとすると相当難しいのでしょうか。

    上記にあったwp_verify_nonce関数についても調べてみたのですが
    こちらはランダムに生成するキーを検証する関数とのことでした。

    その流れでnonceについて調べていたら
    wp-configのput your unique phrase hereの部分の認証キーについても
    ふれているページもでてきました。
    http://hetarena.com/archives/2039

    今回のサーバ移転で、上記ページのput your unique phrase hereの部分が
    https://api.wordpress.org/secret-key/1.1/salt/
    ↑このような乱数になっており、このあたりも関連しているのでしょうか。

    なにかセキュリティ部分とSSLにしたことが関連しているのは
    なんとなく感じているのですが。。。

    どこから手を付けていいかわからなくなってきました>o<;
    誠にお手数をおかけいたしますが
    もし何かお心当たりがありましたら書き込みをお願いいたします。

    hokutonojikeiさん、引き続き検証してはいませんが、もう一つのチケットのパッチ 29217.patch も必要かもしれないです。
    #29217 (HHVM Fatal error with hash_equals() on WordPress 3.9.2) – WordPress Trac
    WordPress 4.4.2 の function wp_verify_nonce と完全に同じではありませんが近くなります。

    上記ページではPHPUnitを使用しているようですが
    やはりこのPHPUnit部分もどこかに追加しなければならないのでしょうか。

    コア開発者さんやパッチ提供者さんがコード修正時のテスト用にPHPUnitを使うためには必要ですが、いまは追加しなくてもよいのではないでしょうか。

    トピック投稿者 hokutonojikei

    (@hokutonojikei)

    gblsmさん、度々のご回答ありがとうございます。

    $nonce = (string) $nonce;

    if ( empty( $nonce ) ) {
                    return false;
    }

    ご提示いただきました2点を追加しまたら無事エラーが出なくなりました!
    ありがとうございます!

    今回コア開発者さんのやりとりをみさせていただきとりあえず
    エラーは出ないようにできましたが、内容が全く分かっておりません^^;

    pluggable.phpもバージョン3の時と4を比べてみましたが
    ずいぶん違う箇所があり、すべてを理解するのはかなり時間がかかりそうです。

    上記はざっくりいうとただエラーが出なくなっているだけなのでしょうか。
    wp_verify_nonce関数とhash_equals関数が動きタイミング攻撃を
    ふせぐことができるようになっているのでしょうか。

    またこれらを理解するためにオススメのサイトや書籍なども
    もしよろしければぜひ伺いたく思いました。
    やはりPHPでブログシステムなどを作ってみるのが
    wordpressの理解を深めるにはいいのでしょうか。

    解決してよかったです。

    WordPressコアについて私も素人なので、疑問にお答えできる情報は持っておりません。たまたま書き込まれた疑問や困り事について自分も不思議に思ったときに、関数名やエラーメッセージでコアのソースコードを検索したり、ネット検索で他の人の情報を読んだりしています。そういうわけで、一番役に立つのはコアのコード(を読むこと)そのものではないでしょうか。ありきたりなコメントで失礼しました。。。

    トピック投稿者 hokutonojikei

    (@hokutonojikei)

    gblsmさん、度々のご回答ありがとうございます。

    今回は大変勉強になりました。
    やはりソースコードを地道に解読していくしかないのですかね^^;

    書き込みされたパッチのところも自分一人だったら
    これが解決の糸口になると想像することすら難しかったです。
    本当に助かりました。ありがとうございました。

    css 云々の件ですが。

    wp_deregister_style( $handle ) を使うと、登録されている CSS を解除できます。その後、admin_init のフックあたりで、wp_enqueue_style を実行することで、任意のCSSを登録して、管理画面に吐かせることができるはずです。

    全く、そのままというわけにはいかないとは思いますが、wp-includes/script-loader.php あたりを見るとある程度デフォルトの CSS の登録名が解るはずですので、プラグインなどを作成すればなんとかなるかと思います。

    MP6 ( https://wordpress.org/plugins/mp6/ ) のコードは参考になるかと思います。これは、過去に WordPress が UI変更をする際に、公式に反映する前にプラグインとして提供したものです。既存のCSSをプラグインのCSSへ置き換えたり等をやっているので、近いことをやれば良いかもです。

    トピック投稿者 hokutonojikei

    (@hokutonojikei)

    Toro_Unitさん、ありがとうございます!

    cssの件は以前質問させていただいたのですが
    解答がつかず、自分で調べる力もなく途方に暮れていました。
    ちょっと自分でも調べてみます!
    助かりました!ありがとうございました!

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「SSL導入後Warning: hash_equals(): Expected・・・」には新たに返信することはできません。