<p>MathJaxには安党でない「コンテンツセキュリティポリシヌ」が必芁です</p>

䜜成日 2012幎06月11日  Â·  42コメント  Â·  ゜ヌス: mathjax/MathJax

珟圚のMathJax実装は、珟代の䞖界では安党ずは芋なされおおらず、デフォルトのContent-Security-Policyhttp://www.w3.org/TR/CSP/ヘッダヌでは䜿甚できない次の機胜を䜿甚しおいたす。

  • 文字列のJavaScript評䟡文字列たたはevalを䜿甚したnew Function1
  • JavaScriptを介しお挿入されたむンラむンスタむル属性2

問題2を修正する必芁があるかどうかは議論の䜙地がありたすが、Content-Security-Policyには、MathJaxを信頌できるスクリプトずしお実行するのに十分な粒床がなく、同時に他のすべおのJavaScriptを解釈しないため、少なくずも1を修正する必芁がありたす。特別に信頌されたファむル。 珟圚、MathJaxを䜿甚したい堎合は、どこでもevalを蚱可する必芁がありたす。 この問題1は、バグ130も匕き起こしたすMathJaxはECMAScript 5の厳密モヌドず互換性がありたせん。

珟圚、MathJaxを機胜させる唯䞀の方法は、ロヌカルにむンストヌルされたMathJaxコヌドを䜿甚しおいる堎合でも、次のCSP HTTPヘッダヌを䜿甚するこずですFirefox 13.0以䞋では非掚奚の「options」ヘッダヌが含たれおいたす。

X-Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; options eval-script
X-WebKit-CSP: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'

これらのヘッダヌにより、CSPが提䟛する保護が可胜になり、MathJaxがペヌゞコンテンツず同じオリゞンから配垃されおいる堎合でも、MathJaxが機胜するようになりたす。

Accepted Fixed Test Not Needed v2.4

最も参考になるコメント

@kaushalmodi 、問題を回避する方法に぀いおの䞊蚘の私のコメント、たたはあなたがリンクしおいる問題ぞの私のコメントを参照しおください。 スクリプトの実行を制限するCSPを䜿甚しおいる堎合は、MathJaxの構成方法を倉曎する必芁がありたす。

党おのコメント42件

安党でない評䟡は私にずっおも倧きな問題です。 間もなくChromeは、すべおの拡匵機胜にevalの䜿甚を犁止するコンテンツセキュリティポリシヌを採甚するように匷制したす。 珟圚、これに準拠するようにReadiumをアップグレヌドしようずしおいたすが、これを䜿甚しおMathJaxを䜿甚するこずはできたせん。

+1

みんなありがずう。 調べおみたす。

単なる予備的な曎新です。 いく぀かの問題をすぐに修正できるようですChromeストアにずっおは十分だず思いたす。 ただし、パフォヌマンスがどのように䜎䞋​​するかはわかりたせん。ご想像のずおり、これは悪い結果になる可胜性がありたす。 @dpvcがこれをより詳现に調べ、おそらくいく぀かの実隓的なブランチを䜜成できるようになったら、最新情報をお知らせしたす。

特定のコヌドに関する远加のコメント、質問、提案がある堎合は、お知らせください。

私はそれを自分で調べるのに少し時間を費やしたした。 時期尚早の最適化をやめる必芁があるようです。 文字列の評䟡は、クロヌゞャを䜜成するよりも速くはありたせん。

たた、 eval()を実行できるかどうかを確認するためだけに、Mathjaxをロヌドするすべおのペヌゞでeval()を実行するべきではありたせん。 基本的に、これは行く必芁がありたす。

new Function()呌び出しは速床のためではなく、メモリのためです。 new Function()はクロヌゞャを䜜成しないため、ロヌカルスコヌプを保持したせん。 これはオブゞェクト指向プログラミングモデルの䞭心であり、倚くのオブゞェクトが䜿甚されおいるため、メモリ䜿甚量に圱響を䞎える可胜性がありたす。 最近のブラりザではテストを行っおいたせん。

evalの䜿甚法に関しおは、MathJaxはむンラむン構成ブロックを凊理するためにそれを䜿甚したすが、珟時点では簡単に眮き換えるこずはできたせん。 したがっお、MathJaxの「安党な」バヌゞョンでは、倖郚構成ファむルを䜿甚する必芁がありたすこれは問題ではないはずであり、ずにかくセキュリティポリシヌに沿っおいる可胜性がありたす。 参照するeval呌び出しは、 evalを実行できるかどうかを刀断するためではなく、グロヌバル名前空間で実行できるかどうかを刀断するためのものですすべおのブラりザヌに圓おはたるわけではありたせん。 セキュリティのニヌズに察応できるバヌゞョンでは、これを削陀する必芁があるこずを認識しおいたす。

これは、JavaScriptでクロヌゞャが機胜する方法ではありたせん。 ロヌカルスコヌプのすべおを保持するわけではありたせん。 関数が䜿甚するものだけをキャプチャしたす。 CONSTRUCTOR関数は、ロヌカルスコヌプから䜕も䜿甚せず、クロヌゞャヌを䜜成するためのコストはかかりたせん。 これは、存圚しなかった問題の時期尚早な最適化です。

evalに関する限り、私のポむントは、必芁がない堎合、特に安党でないeval()を䜿甚するコヌドの堎合は、ペヌゞ䞊でコヌドを実行するべきではないずいうこずです。 そのEVAL関数は、Mathjaxがむンラむン構成に含たれおいる堎合にのみ䜿甚するため、必芁になるたでテストを実行しないでください。 しかし、実際には、なぜ構成は実行可胜コヌドでなければならないのでしょうか。 関数に枡されるのは、実際にはJSONのチャンクにすぎたせん。 JSONを枡しお解析し、MathJAXに関数を呌び出させおみたせんか

これは、JavaScriptでクロヌゞャが機胜する方法ではありたせん。 ロヌカルスコヌプのすべおを保持するわけではありたせん。 関数が䜿甚するものだけをキャプチャしたす。

物事はそれほど明確ではないず思いたす。 たず、これは、コヌドのその郚分が蚘述された2008幎にはそうではありたせんでした。 今朝テストを実行したずころ、その時点で䜿甚されおいたSafari、Firefox、Opera、IEのバヌゞョンがすべお、説明したずおりに機胜するこずを確認したした䜿甚する倉数に関係なく、スコヌプチェヌン党䜓がクロヌゞャヌに保持されたした。 。 これを参照しおいるサむトは今朝昚日は皌働しおいたダりンしおいるようですので、詳现は確認できたせんが、ECMAScript262仕様の䞀郚だったのを芚えおいたす。

Safari、Chrome、Firefox、およびIEの珟圚のバヌゞョンは、説明どおりに機胜しおいるように芋えるため、それ以降、状況が倉化しおいたす。 倉曎が発生したのはSafari4、Firefox 3.6、IE9のようです。 テストする叀いバヌゞョンのChromeがないので、そこでの履歎がわかりたせん。 IE8は叀い動䜜をしたすが、Opera12はただ動䜜したす。 モバむルデバむスをチェックしおいたせん。 これらのブラりザの䞀郚はMathJaxのサポヌトリストに含たれおいるため、MathJax党般に぀いお考慮する必芁がある問題です。 もちろん、あなたのニヌズに合わせお䜕かを解決できるず確信しおいたす。

JSONデヌタの堎合、構成ブロックは単なるMathJax.Hub.Config()呌び出し以䞊のものである可胜性がありたす。 たずえば、むベントリスナヌをむンストヌルしたり、TeX入力jaxに関数を远加しお、远加のコマンドを実装したりできたす。 これらには実行可胜コヌドが含たれおいるため、JSONデヌタの䞀郚にするこずはできたせん。 この機胜は垞に䜿甚されるわけではありたせんが、実際のWebサむトで䜿甚されおいるこずは確かです。 さらに、すべおのタヌゲットブラりザにJSONラむブラリが組み蟌たれおいるわけではないため、解析を実行するには远加のラむブラリが必芁になりたす。 確かに乗り越えられないわけではありたせんが、ダりンロヌドするコヌドが増えたす。

これを倉曎するず+1され、ずりわけGithubがMathJaxをりィキで再び蚱可するようになりたす。

@ketchこの点に関しおGithubが発蚀するためのリファレンスはありたすか この問題がGithubWikiのセキュリティにどのように圱響するかわかりたせん。

@pkraこれが原因かどうかはわかりたせんが、そうだず思いたす。 私はこのペヌゞのコメントによっおこれに導かれたした

http://stackoverflow.com/questions/16889421/how-to-insert-javascript-to-enable-mathjax-on-github-wiki-pages

そしお、参照しおください

https://github.com/blog/1477-content-security-policy

MathJaxのサポヌトは、CSP機胜の実装ず同時に消滅したず思いたす。

ありがずう、それは面癜いです。 この2぀が関連しおいるのかどうかはわかりたせんが、誰が知っおいるのでしょうか。githubチヌムは、MathJaxを削陀した理由に぀いお公に話し合ったこずはありたせん。 圌らのセットアップにずっお実際には問題ではない䜕かが理由だったずしたら、それは残念なこずです。

CSPに準拠するための+1。

+1

私はこのスレッドを読んで、それが非垞に情報的でかなり偏りがないこずを発芋したした。 私は、圌ら[github]がセキュリティの問題でexec、CSPのようなものを防ぎ、それを蚱可しないだろうずいう私の䞻匵を賭ける぀もりです。

そのコヌドサンプルず過去のバヌゞョンの神話的なコンピュヌタの䌝承に惑わされおいるこずに加えお、それでも非垞に興味深いず思いたす。そしお、機胜が継続しお䜿甚できるようにする必芁があるずいう立堎を取りたすが、それは幞せを劚げるこずはありたせん。セキュリティ関連の䞖界でMathJAXを䜿甚するパス。

ちなみに、MathJaxを削陀した理由に぀いおGithubサポヌトにメヌルを送りたした。 返信は次のずおりです。

CSPがその理由の1぀でした。 その他の理由には、パフォヌマンスの問題、およびハヌドメンテナンスが含たれたす。 削陀する理由を取り陀いた堎合は、远加するこずを怜蚎するかもしれたせんが、それを玄束するこずはできたせん。

@ketchに感謝したす、それは知っおおくず良いこずです。

@dpvcこれを次のマむルストヌンに远加する必芁がありたすか

+1

@pkra 、远加する予定でした。 ただリストの䞭でこれほど数倀的に䞋がっおいたせんでした。

@dpvc右。 これを修正するには、倧幅な倉曎特にむンラむン構成の堎合が必芁かどうか、぀たりバヌゞョンゞャンプを匷制する必芁があるかどうかをほずんど考えおいたした。

MathJax倉数を介した構成を可胜にするために行った倉曎により、ゞャンプせずに構成を含めるこずができるようになりたす。 䞋䜍互換性があり、MathJax.jsの「安党な」バヌゞョンを別途䜜成しなくおも実行できるず確信しおいたす。 もちろん、開発䞭にモンキヌレンチを䜜品に投げ蟌むような䜕かが珟れる可胜性がありたす。 ただ曞かれおいないか、テストされおいたせん。

MathJaxを安党にするための+1。 セキュリティ䞊の懞念から、この玠晎らしいラむブラリを本番環境で䜿甚できないのは残念です。

この問題に関する進展はありたすか Chrome拡匵機胜を備えたペヌゞにMathJaxをプログラムで挿入しようずしおいたすが、レンガの壁ではないにしおも、少なくずもたずもな堅固な壁にぶ぀かっおいたす。 emichael / texthings4で説明されおいるように、私の最倧の問題はMathJax.js:265です。 私はぞの呌び出しを排陀するこずができたした

new Function()

䞊蚘のようにクロヌゞャに倉換するこずで非垞に簡単ですが、 evalたたはむンラむンスクリプトを䜿甚しお回避する方法がわかりたせん。

線集私はナヌザヌに安党でない評䟡ず安党でないむンラむンをCSPに远加するオプションを䞎えるこずになりたしたが、MathJaxを安党なCSPに远加するための長期的な修正は玠晎らしいでしょう。 +1

@emichael 、次のリリヌス来月に予定に倉曎を含める予定ですが、ただ行っおいたせん。 その理由の1぀は、実際にこれをテストする方法それを必芁ずする環境をセットアップする方法を調べおいないこずです。 どこを芋ればよいか、最小限のテスト環境が䜕であるかに぀いおの提案をいただければ、それは圹に立ちたす。

たた、evalに関する゚ラヌは、実行時たたはコンパむル時に発生したすか ぀たり、MathJax.jsにeval呌び出しが含たれおいる堎合、それが䜿甚されおいない堎合でも発生したすか、それずもevalが実際に詊行された堎合にのみ発生したすか 私が仕様を読んだこずは、それが実行時゚ラヌであるべきだず瀺唆しおおり、それは私にずっお物事をより良くするでしょうが、あなたは答えを知っおいるかもしれないず思いたした。

テストサヌバヌがある堎合は、応答ヘッダヌでContent-Security-Policyを蚭定するだけです。 script-srcに'unsafe-eval'たたは'unsafe-inline'が含たれおいないこずを確認しおくださいGitHub自䜓が良い䟋です。 そうでない堎合は、最小限のChrome拡匵機胜を䜿甚しお、ヘッダヌを自分で挿入できたす。

ランタむム゚ラヌです。

ありがずう。 䜕ができるか芋おいきたす。

evalコマンドは、むンラむン構成ブロックを凊理するためにのみ䜿甚されたすその堎合、グロヌバル倉数がどのように凊理されるかをテストするための最初のコマンドがありたす。 最初の蚭定は、むンラむン構成が䜿甚されるたで延期できたす。むンラむン構成の䜿甚を避ける堎合は、それで察凊する必芁がありたす。 v2.3では、この問題を解決するための準備ずしおevalなしでむンラむン構成を行う新しい方法を远加したため、eval呌び出しをトリガヌせずにHTMLファむル内にMathJax構成を含めるこずができたす。

OK、 new Function()ずeval()の呌び出しを削陀するパッチを䜜成したした。 これは最新の開発ブランチに基づいおいたすが、必芁に応じお、f220993にリストされおいる倉曎をMathJax.jsのマスタヌコピヌにも加えるこずができるはずです。 むンラむンスタむルを蚱可する必芁がありたす実際にはそれを回避するこずはできたせん。 about:blankぞのフォント参照もあるので、MathJaxはネットワヌクアクセスを行わなくおも欠萜しおいるフォントぞの応答をテストできるため、 about:をfont-srcに远加するこずをお勧めしたす。

良い スタむルに'unsafe-inline'が絶察に必芁な理由がわかりたす。

script-src 'unsafe-inline'暩限に関する限り、私が正しく理解しおいれば、スクリプトは、ナヌザヌが最初にむンラむンMathJax構成を含めた堎合にのみむンラむン化されたす。 script-srcに'unsafe-inline'がなくおもすべおが機胜する可胜性があるため、これで問題ありたせん。 ただし、ドキュメントで蚀及する必芁がありたす。

むンラむンスクリプトに぀いおのあなたの理解は正しいです。 䜿甚する必芁のないむンラむン構成ブロックを䜿甚しおいる堎合を陀き、 script-src 'unsafe-inline'は必芁ありたせん。 ロヌカルのMathJax構成ファむル config=に远加を䜿甚するか、通垞はMathJax.Hub.Config()に枡すオブゞェクトにMathJax倉数を蚭定する通垞のスクリプトファむルを䜿甚できたす。 MathJax.Hub.Config()そしお、MathJax.jsをロヌドするスクリプトの_前_にそのファむルをロヌドしたす。 たずえば、

var MathJax = {
  tex2jax: {
    inlineMath: [['$','$'],['\\(','\\)']],
    procesEscapes: true
  }
};

mathjax-config.jsずいうファむルに入れおから

<script src="mathjax-config.js"></script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>

それがあなたの芁件を凊理するこずを願っおいたす。

確かにそうです。 迅速な修正をありがずう

それほど速くはなかったず蚀う人もいたすがこの問題は2幎間公開されおいたす、次のリリヌスに向けおマヌクを付けお、ずにかくそれに取り掛かっおいたので、コメントは次のようになりたした。適切な時間。

=>マヌゞされたした。

では、誰かがgithubにmathjaxを蚱可するように䟝頌したこずがありたすか mathjaxでレンダリングするために、githubの問題でtexを蚘述できるdotjsファむルを䜜成するこずはただできたせん...

ここの䟋-http//stackoverflow.com/questions/16889421/how-to-insert-javascript-to-enable-mathjax-on-github-wiki-pages-倱敗したす。

こんにちは、

私は珟圚、githubペヌゞでjekyllサむトをホストしおおり、この蚘事に埓っおおり、むンクルヌドファむルに以䞋を远加しおいたす。

<script type="text/javascript"
  src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

これはhttpsたたはhttpで動䜜するはずです。 ただし、httpsを䜿甚しおブログをブラりザにロヌドするず、クリックしお安党でないスクリプトを蚱可するたで、ブログが混乱しおいるように芋えたす。 どうすればこれを修正できたすか

@silky特定のAFAWKはありたせん。 クラむアント偎はありそうもないず思いたすが、MathJaxノヌドは生産的な代替手段を提䟛する可胜性がありたす。

@ diego898䞀般的な質問は、 http //groups.google.com/forum/#forum / mathjax-usersでより適切に適合したす。 ラむブペヌゞ、ブラりザ、OSの詳现などぞのリンクを垞に含めおください。ありがずうございたす。

@pkraこの問題に関連するバグなのか、それずも自分の構成の問題なのかわからなかったず理解しおいたす

@ diego898問題ありたせん。 あなたが説明しおいるこずは、この問題に関連しおいるようには聞こえたせん。

私はただこの問題を芋おいたす。 https://github.com/mathjax/MathJax/issues/1988を参照しおください。

@kaushalmodi 、問題を回避する方法に぀いおの䞊蚘の私のコメント、たたはあなたがリンクしおいる問題ぞの私のコメントを参照しおください。 スクリプトの実行を制限するCSPを䜿甚しおいる堎合は、MathJaxの構成方法を倉曎する必芁がありたす。

元の問題の2は解決されたしたか mathjaxv3はただ挿入しおいるようです

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡