プロジェクト

全般

プロフィール

Proposal #834

未完了

IE8でセキュリティレベル混在の警告が表示される

Shinichi Ito さんが12年以上前に追加. 約12年前に更新.

ステータス:
新規(New)
優先度:
通常(Normal)
担当者:
対象バージョン:
開始日:
2011/09/28
期日:
進捗率:

0%

予定工数:

説明

  • Redmine 1.2.0
  • Redmine Wiki Extensions plugin 0.3.5
  • httpsのみでサービス提供

している環境にIE8でアクセスし、チケットの内容を表示させると、「セキュリティの警告」ダイアログ

セキュリティで保護された Web ページ コンテンツのみ表示しますか?

このページには、安全な HTTPS 接続を使用しないで配信されるコンテンツが
含まれており、Web ページ全体のセキュリティを損なうおそれがあります。

が表示されます。

確認したところ、全てのコンテンツにはhttpsでアクセスしており、httpで取得されるものはないが、 redmine_wiki_extensions/assets/javascripts/wiki_smiles.jsEven more problems with the IE 8 mixed content warningのコメント に記載されているIE8の問題を踏んでいるようです。

redmine_base_url に設定されているURLを相対パスから絶対パスにする以下のパッチ(for 0.3.5)でセキュリティ警告が表示されなくなったことを確認してます。

--- redmine_wiki_extensions/lib/wiki_extensions_helper_patch.rb.orig    2011-09-27 06:09:57.000000000 +0900
+++ redmine_wiki_extensions/lib/wiki_extensions_helper_patch.rb 2011-09-27 06:10:22.000000000 +0900
@@ -39,7 +39,7 @@
     heads_for_wiki_formatter_without_wiki_smiles
     return if ie6_or_ie7?
     unless @heads_for_wiki_smiles_included
-      baseurl = url_for(:controller => 'wiki_extensions', :action => 'index', :id => @project) + '/../../..'
+      baseurl = url_for(:only_path => false, :controller => 'wiki_extensions', :action => 'index', :id => @project) + '/../../..'
       imageurl = baseurl + "/plugin_assets/redmine_wiki_extensions/images" 
       content_for :header_tags do
         o = stylesheet_link_tag(baseurl + "/plugin_assets/redmine_wiki_extensions/stylesheets/wiki_smiles.css")

Haru Iida さんが12年以上前に更新

  • 担当者Haru Iida にセット
  • 対象バージョン0.3.7 にセット

ありがとうございます。見てみます。

Haru Iida さんが12年以上前に更新

こちらで環境を作ってみましたが残念ながら再現しませんでした。
IE8でhttpsで接続してみましたが警告は出ていません。

Shinichi Ito さんが12年以上前に更新

Haru Iida は書きました:

こちらで環境を作ってみましたが残念ながら再現しませんでした。
IE8でhttpsで接続してみましたが警告は出ていません。

互換表示の設定はどうなっているでしょうか。

「ツール」 - 「互換表示設定」で互換表示設定ウィンドウを表示させ、以下の設定を行ってみてください。

  • 「互換表示に追加した Web サイト(W)」を空にする
  • その下の3つのチェックボックス全てのチェックを外す
    • マイクロソフトからの更新された Web サイト一覧を含める
    • 互換表示でイントラネット サイトを表示する
    • 互換表示ですべての Web サイトを表示する
  • 「閉じる(C)」をクリックして互換表示設定ウィンドウを閉じる

IE7互換表示モード(「ツール」 - 「互換表示」をクリックし、互換表示をオンにする))にすれば、現象は発生しません。

Haru Iida さんが12年以上前に更新

Shinichi Ito は書きました:

「ツール」 - 「互換表示設定」で互換表示設定ウィンドウを表示させ、以下の設定を行ってみてください。

「ツール」がどこにあるのか判りません:(
普段IEを使ってないので。。。

https://www.r-labs.org/

にアクセスしてセキュリティの警告が出ることは確認しています。ここでWiki Extensionsを削除しても警告は消えませんでした。
他のプラグインが影響しているかもしれません。

上記とは別にredmineとWiki Extensionsだけの環境を構築してみましたが再現しませんでした。

IEの問題ということであればあまりこれに時間を掛けたくないのが正直なところです。

Shinichi Ito さんが12年以上前に更新

Haru Iida は書きました:

Shinichi Ito は書きました:

「ツール」 - 「互換表示設定」で互換表示設定ウィンドウを表示させ、以下の設定を行ってみてください。

「ツール」がどこにあるのか判りません:(

メニューバーのメニューです。
普段表示させていない場合でも、Alt を押すと表示されます。

https://www.r-labs.org/

にアクセスしてセキュリティの警告が出ることは確認しています。ここでWiki Extensionsを削除しても警告は消えませんでした。
他のプラグインが影響しているかもしれません。

JavaScriptを読み込んでいる他のプラグインも同じだと思います

上記とは別にredmineとWiki Extensionsだけの環境を構築してみましたが再現しませんでした。

IEの問題ということであればあまりこれに時間を掛けたくないのが正直なところです。

互換表示を有効にすることで回避できるので、回避方法をどこかに書いておいてもらえればよいです。

Haru Iida さんが12年以上前に更新

Shinichi Ito は書きました:

メニューバーのメニューです。
普段表示させていない場合でも、Alt を押すと表示されます。

ありがとうございます。設定を行ってみましたが結局警告は表示されませんでした。

Javascriptのパス自体はたまたま別のバグ修正ですでに絶対パスに変更しています。 r200
ですので今後のバージョンではこの問題は発生しなくなると思います。

Shinichi Ito さんが12年以上前に更新

Haru Iida は書きました:

Javascriptのパス自体はたまたま別のバグ修正ですでに絶対パスに変更しています。 r200
ですので今後のバージョンではこの問題は発生しなくなると思います。

「説明」の文章がよくなかったですね。

Even more problems with the IE 8 mixed content warningの14番目のコメント


IE fails with this link, and shows mixed content error. Problematic is img parameter, which contains path to file and file name with extension… There are two workarounds for this:

  1. make url absolute (use javascript, to avoid hardcoded strings)
    String url = location.protocol + ‘//’ + location.domain + ‘/application/processImage.do?img=path/to/image.png’;
  2. add another parameter at the end of url:
    String url = ‘/application/processImage.do?img=path/to/image.png&anotherParameter=value’;

の通り、JavaScriptなどへのリンクを http(s)://... というようにプロトコルから始まるものにする必要があります。

Haru Iida さんが12年以上前に更新

Shinichi Ito は書きました:

の通り、JavaScriptなどへのリンクを http(s)://... というようにプロトコルから始まるものにする必要があります。

なるほど。誤解していました。
Redmineに何もプラグインを入れなくてもすべてのページで以下のようなjavascriptをインクルードしていますがこれはなぜこちらは問題無いなのでしょうか?プロトコルでは始まっていないと思うのですが。。。

<script src="/javascripts/prototype.js?1321015678" type="text/javascript"></script>
<script src="/javascripts/effects.js?1321015678" type="text/javascript"></script>
<script src="/javascripts/dragdrop.js?1321015678" type="text/javascript"></script>
<script src="/javascripts/controls.js?1321015678" type="text/javascript"></script>
<script src="/javascripts/application.js?1321015678" type="text/javascript"></script>

Shinichi Ito さんが12年以上前に更新

Haru Iida は書きました:

なるほど。誤解していました。
Redmineに何もプラグインを入れなくてもすべてのページで以下のようなjavascriptをインクルードしていますがこれはなぜこちらは問題無いなのでしょうか?プロトコルでは始まっていないと思うのですが。。。

URLの最後にパラメータが追加されている(note-7 の (2) に該当している)からだと考えています。

Haru Iida さんが12年以上前に更新

Shinichi Ito は書きました:

URLの最後にパラメータが追加されている(note-7 の (2) に該当している)からだと考えています。

そちらの環境ではWikiExtensionsのjavascriptにはパラメータが着いていないのでしょうか?こちらでは以下のようにパラメータが着いています。

 <link href="/plugin_assets/redmine_wiki_extensions/stylesheets/wiki_extensions.css?1320899240" media="screen" rel="stylesheet" type="text/css" />
 <script src="/plugin_assets/redmine_wiki_extensions/javascripts/wiki_extensions.js?1320899240" type="text/javascript"></script>

だからこちらでは再現しないのかもしれませんね。
この違いは何だろう??

Shinichi Ito さんが12年以上前に更新

Haru Iida は書きました:

URLの最後にパラメータが追加されている(note-7 の (2) に該当している)からだと考えています。

そちらの環境ではWikiExtensionsのjavascriptにはパラメータが着いていないのでしょうか?こちらでは以下のようにパラメータが着いています。

JavaScriptやCSSファイルにはパラメータがついてます。

<link href="/plugin_assets/redmine_wiki_extensions/stylesheets/wiki_extensions.css?1314652839" media="screen" rel="stylesheet" type="text/css" />
<script src="/plugin_assets/redmine_wiki_extensions/javascripts/wiki_extensions.js?1314652839" type="text/javascript"></script>

<link href="/plugin_assets/redmine_wiki_extensions/stylesheets/wiki_smiles.css?1314652839" media="screen" rel="stylesheet" type="text/css" />
<script src="/plugin_assets/redmine_wiki_extensions/javascripts/wiki_smiles.js?1314652839" type="text/javascript"></script>

エモーティコン(顔文字)のpngファイルへのリンクにはパラメータがつかないのではないでしょうか。

<script type="text/javascript"> 
redmine_base_url = '';
var buttons = [];buttons.push([':)', 'smile.png', 'Smile']);
buttons.push([':(', 'sad.png', 'Sad']);
buttons.push([':P', 'tongue.png', 'Tongue']);
buttons.push([':D', 'biggrin.png', 'Big grin']);
buttons.push([';)', 'wink.png', 'Wink']);
buttons.push(['(/)', 'check.png', 'Check']);
buttons.push(['(!)', 'warning.png', 'Warning']);
setEmoticonButtons(buttons, '/plugin_assets/redmine_wiki_extensions/images');
</script>

Haru Iida さんが12年以上前に更新

Shinichi Ito は書きました:

エモーティコン(顔文字)のpngファイルへのリンクにはパラメータがつかないのではないでしょうか。

ああ、確かにpngにはパラメータが無いですね。とりあえずダミーのパラメータを付ける修正をしてみました。
これで解決するかもしれません。

Shinichi Ito さんが12年以上前に更新

Haru Iida は書きました:

ああ、確かにpngにはパラメータが無いですね。とりあえずダミーのパラメータを付ける修正をしてみました。
これで解決するかもしれません。

まだ警告が出てます:(

HelperMethodsWikiExtensions モジュール( lib/wiki_extensions_helper_patch.rb )の

o << "setEmoticonButtons(buttons, '#{imageurl}');\n" 

の2つ目の引数がプロトコル+ホストつきになれば警告が出力されなくなるんですが…

Haru Iida さんが12年以上前に更新

Shinichi Ito は書きました:

Haru Iida は書きました:

ああ、確かにpngにはパラメータが無いですね。とりあえずダミーのパラメータを付ける修正をしてみました。
これで解決するかもしれません。

まだ警告が出てます:(

あら残念。確認していただきありがとうございます。

HelperMethodsWikiExtensions モジュール( lib/wiki_extensions_helper_patch.rb )の
[...]

の2つ目の引数がプロトコル+ホストつきになれば警告が出力されなくなるんですが…

同一サイト内のリンクにプロトコルとホストは含めたくないです。
リバースプロキシで運用している場合に問題になりそうですし。

Haru Iida さんが12年以上前に更新

  • 対象バージョン0.3.7 から 0.3.8 に変更

Haru Iida さんが12年以上前に更新

  • 対象バージョン0.3.8 から いつかやる(Unplanned) に変更

Akiko Takano さんが約12年前に更新

クローズしているような状況ですが、こちらの環境で気になる点がありましたので、追記させていただきます。

わたしも https のReverse Proxy下での利用を行っています。

この環境で、Wiki Extensionsを導入し、IE8 + 互換設定OFFの表示の場合、セキュリティレベルの警告が出るようになりました。
自由にブラウザを選べるケースなら問題ないのですが、業務上同じ設定のPC(VMとか)を使わないといけない方もいらっしゃいます。このパターンだと、IE8しか選べなくなっています..。

さて、Shinichi Itoさんの記述の通りに、IE8の互換表示をONにすれば警告は無くなります。

ただし、1点不具合が出てしまいました。

不具合は、ファイルアップロードをしたい場合です。

1つだけなら問題ないのですが、複数ファイルをアップロードしようとして『別のファイルを追加』のアイコンをクリックしても、アップロードフォームが増えずに、該当するチケットの画面に戻ってしまいます。
(onClickでアップロードフォームが増えるはずだが、javascriptが効かずに増えてくれない)
互換表示をONにしたせいで、アップロードフォームを追加するinnerHTML とかのメソッドがIE7で動いてくれないようなのです。

現状、IE8の方はどちらかの機能を捨てるしかない状況です..。

一点、

同一サイト内のリンクにプロトコルとホストは含めたくないです。
リバースプロキシで運用している場合に問題になりそうですし。

というコメントがありましたが、Redmineの設定で、プロトコルとホストを指定するフィールドがあるので、こちらを利用すると、もしかしたら大丈夫かもしれません。
(Reverse Proxyでの利用の場合は、ここをデフォルトではなく明示的に登録しているので)

ただ、IE8のためにここまで対応するのはどうかとも思いますが...

Akiko Takano さんが約12年前に更新

ひとまず私の環境では、そのままにしておけないので、ユーザさんのために対応を少し考えてみました。参考になれば...。

1. コードの調整

下記の通りにしてみました。
ご指摘の通りセキュリティのエラーは無くなっています。

多段のReverse Proxyの場合や、逆にProxyを通さずに直接参照している場合は検証できていないので、分かりません...。(Emoticonを選ぶボタンが出てこないと思います)

diff -r 8eee8ae8d74f lib/wiki_extensions_helper_patch.rb
--- a/lib/wiki_extensions_helper_patch.rb       Sat Jan 28 18:16:18 2012 +0900
+++ b/lib/wiki_extensions_helper_patch.rb       Wed Feb 01 12:00:09 2012 +0900
@@ -54,8 +54,15 @@
     heads_for_wiki_formatter_without_wiki_smiles
     return if ie6_or_ie7?
     unless @heads_for_wiki_smiles_included
+
+      h = Setting.host_name
+      h = h.to_s.gsub(%r{\/.*$}, '') unless Redmine::Utils.relative_url_root.blank?
+      p = Setting.protocol
+
       baseurl = Redmine::Utils.relative_url_root
-      imageurl = baseurl + "/plugin_assets/redmine_wiki_extensions/images" 
+      absoluteurl = "#{p}://#{h}#{baseurl}" 
+      imageurl = absoluteurl + "/plugin_assets/redmine_wiki_extensions/images" 
+
       content_for :header_tags do
         o = stylesheet_link_tag("wiki_smiles.css", :plugin => "redmine_wiki_extensions")
         o << javascript_include_tag("wiki_smiles.js", :plugin => "redmine_wiki_extensions")

2. 運用での調整

ブラウザの設定を変更します。(可能であれば)
IE8のインターネットオプションで、セキュリティのカスタマイズをします。

ここが参考になりました。

2の方法は、ユーザさんがちゃんと設定してくれるか、というあたりに依存しています。
ただ、Redmineのユーザ向けのサイトに、『こんなエラーがあったらこうしてね』みたいなQ&Aを用意しておけば、運用で回避できるかと思います。

私の環境では、IEもふくめセキュリティポリシーなどがWindows Updateの際にリセットされる可能性もあるので、2の方法も提示しつつ、Proxy経由でしかアクセスしないと分かっているサーバでは、コードの調整もしてみます。

お邪魔してしまい、申しわけありません。

Haru Iida さんが約12年前に更新

Akikoさん、レポートありがとうございます。

私としてはURLにプロトコルを入れるのはイヤなのでコードを直すとしたらIE8の場合にwikiツールバーにエモーティコンボタンを出さないようにしたいです。現状でもIE7以下の時は問題があるため出してません。
ツールバーにボタンは出なくても顔文字をキーボードから入力すればエモーティコンは表示されます。

URLにプロトコル入れたバージョンが必要だという方がいれば、せっかくbitbucketにリポジトリがあるのでforkしてIE8対応版として維持していただければよいかなと思ってます。

Akiko Takano さんが約12年前に更新

私としてはURLにプロトコルを入れるのはイヤなのでコードを直すとしたらIE8の場合にwikiツールバーにエモーティコンボタンを出さないようにしたいです。現状でもIE7以下の時は問題があるため出してません。

わたしもプロキシを使っていますし、さらにいろんなルートで参照する可能性があるので、できるだけホスト/プロトコルは含めたくないという考えなので、haruさんと同意見です。

ただ、今回IE8で互換モードをONにした場合、ご指摘の通りEmoticonのアイコンがWikiツールバーから消えてセキュリティエラーは出なくなったのですが、Redmine本来のJavaScriptもNGになってしまったので、対策を考えた次第です。

ですから、わたしのケースでは、自分の管理する範囲で対応するほうが良いと思っていて、フォークまではしなくてもいいかな...と思っています。
(IE9では問題なくなっていますし、いずれはブラウザ全体もIE9にバージョンアップしていく方向だと思いますので)

ひとまず参考情報程度にとどめていただければ幸いです。

Shinichi Ito さんが約12年前に更新

Akiko Takano は書きました:

不具合は、ファイルアップロードをしたい場合です。

1つだけなら問題ないのですが、複数ファイルをアップロードしようとして『別のファイルを追加』のアイコンをクリックしても、アップロードフォームが増えずに、該当するチケットの画面に戻ってしまいます。
(onClickでアップロードフォームが増えるはずだが、javascriptが効かずに増えてくれない)
互換表示をONにしたせいで、アップロードフォームを追加するinnerHTML とかのメソッドがIE7で動いてくれないようなのです。

こちらの検証環境では

  • 「別のファイルを追加」をクリックするとファイルアップロードフォームが増える
  • 複数ファイルをアップロードできる

状態でした(Takanoさんのおっしゃる現象は発生しませんでした)。

Shinichi Ito さんが約12年前に更新

Haru Iida は書きました:

私としてはURLにプロトコルを入れるのはイヤなのでコードを直すとしたらIE8の場合にwikiツールバーにエモーティコンボタンを出さないようにしたいです。現状でもIE7以下の時は問題があるため出してません。
ツールバーにボタンは出なくても顔文字をキーボードから入力すればエモーティコンは表示されます。

今後の拡張で、Redmine Wiki Extensions plugin の各機能についてon/offを選択できる機能の追加を
検討していただけるとうれしいです。

エモーティコンの機能をoffにすることでこの問題は回避できるので。

Haru Iida さんが約12年前に更新

Shinichi Ito は書きました:

今後の拡張で、Redmine Wiki Extensions plugin の各機能についてon/offを選択できる機能の追加を
検討していただけるとうれしいです。

エモーティコンの機能をoffにすることでこの問題は回避できるので。

今回のIE8+httpsの問題を回避する目的以外に必要性が無いように思えます。

エモーティコンの機能をoffにするという意味ではlib/wiki_extensions_helper_patch.rb を消してしまえばオフになります。
これで試してみてください。

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