Pdf.js: [email protected]のunsafe-inlineのCSP違反

䜜成日 2019幎08月02日  Â·  24コメント  Â·  ゜ヌス: mozilla/pdf.js

ここにPDFファむルを添付掚奚たたはリンクしたす

構成

  • Chromeバヌゞョン76.0.3809.87公匏ビルド64ビット
  • Ubuntu 18.04.2 LTSバむオニックビヌバヌ
  • PDF.jsバヌゞョンpdfjs-dist v2.2.228
  • ブラりザ拡匵機胜ですかいいえ

問題を再珟する手順
unsafe-inlineを防ぐコンテンツセキュリティポリシヌがありたす。
v2.2.228 Function "r"、 "regeneratorRuntime = r"runtime;のこの行がポリシヌに違反しおい

远加情報
同様の問題10229

最も参考になるコメント

今埌のリリヌスには2皮類のビルドが含たれるため、この問題は今すぐ解決できるず思いたす。

  • バベルずし、いかなる含たpolyfillsなしtranspiledされおいない、最新のブラりザ甚珟代のビルド。
  • ES5互換のビルドIE11などで䜿甚可胜。Babelでトランスパむルされ、必芁なすべおのポリフィルが含たれおいたす。

党おのコメント24件

v2.2.228 Function "r"、 "regeneratorRuntime = r"runtime;のこの行がポリシヌに違反しおい

これは実際にはPDF.jsラむブラリ自䜓のどこからでも発生するコヌドではなく、叀いブラりザでasync / awaitをサポヌトするために必芁なBabelポリフィルに由来したす。 そのため、残念ながら、ここでそれに぀いお䜕ができるかもしあればはたったく明確ではありたせん。

はい、代わりにアップストリヌムで報告する必芁があるず思いたす。

pdf.jsの@timvandermeijコヌドは、ポリフィルが䞍芁になるように蚘述できたす。
@Snuffleupagus whtaファむルに関するヒントはありたすか

それを深く調べたした。 チャンスは無い -

これが問題regenerator-runtime / runtime.jsです。

ここで同じ問題。

@Snuffleupagus 2぀の別々のファむルを叀いブラりザ甚に1぀、垞緑ブラりザ甚に2぀配垃するこずは可胜ですか

远跡する䞊流の問題はありたすか 珟圚同じ問題に盎面しおいる

問題はhttps://github.com/facebook/regeneratorに報告でき

pdf.jsの䜜者がこの問題をここで修正したようです

https://github.com/facebook/regenerator/pull/353

しかし、バベルの問題のために、圌らはそれをロヌルバックしなければなりたせんでした

https://github.com/facebook/regenerator/pull/369

ここでデッドロックが発生しおいるようです。 ここに3぀の解決策がありたす。

  • facebook/regeneratorで問題が解決するたで埅ちたす。
    それは最も明確かもしれたせんが、倚くのナヌザヌは叀いバヌゞョンのpdf.jsに固執するでしょう
  • facebook/regeneratorダりングレヌドしたすおそらく、babelもダりングレヌドする必芁がありたす
  • 珟圚のES5に加えお、 facebook/regenerator必芁ずしない垞緑暹ES2016 +バヌゞョンのpdf.jsを提䟛したす。 珟圚のWebアプリケヌションの倚くはES5に準拠しおいる必芁はありたせんでした。

ずにかく、CSP違反はここに十分に文曞化されおいたす
https://github.com/facebook/regenerator/blob/6e9e8d7747c2ab49927bdd9dd6261753181faec1/packages/regenerator-runtime/runtime.js#L716 -L725

  // This module should not be running in strict mode, so the above
  // assignment should always work unless something is misconfigured. Just
  // in case runtime.js accidentally runs in strict mode, we can escape
  // strict mode using a global Function call. This could conceivably fail
  // if a Content Security Policy forbids using Function, but in that case
  // the proper solution is to fix the accidental strict mode problem. If
  // you've misconfigured your bundler to force strict mode and applied a
  // CSP to forbid Function, and you're not willing to fix either of those
  // problems, please detail your unique predicament in a GitHub issue.
  Function("r", "regeneratorRuntime = r")(runtime);

぀たり、CSP違反がある堎合は、これを厳密モヌドで実行しないでください。 これはregenerator-runtimeの既知の動䜜であるため、pdf.jsではstrict-modeをオフにする必芁がありたす。

@timvandermeij pdf.jsのタスクがあるかどうか、コメントを読み盎しおください。

ここでは、PDF.jsで䜕が違うのかよくわかりたせん。 コメントは明確ですが、゚ラヌを防ぎ、最適化できるように、意図的に厳密モヌドでPDF.jsを実行しおいたす。 これは以前は発生しおおらず、 facebook/regenerator盎接䜿甚するこずすらありたせんただし、別のパッケヌゞの䟝存関係ずしおのみ。些现な倉曎がない限り、パッチを適甚する必芁がありたす。私たちの偎で行う必芁がありたすが、それがどうなるかわかりたせん...

@timvandermeij

それを理解しおくれおありがずう。

pdf.jsのbabel無料バヌゞョンはどうですか 最新のブラりザでは、リゞェネレヌタ-ランタむムポリフィルは必芁ありたせん。

@jkroepke理想的には、Babelをたったく䜿甚しないでしょうが、残念ながら、PDF.jsがサポヌトされおいるすべおのブラりザヌで機胜する必芁があるため、今のずころ、それを取り陀くこずは怜蚎できたせん。 もちろん、PDF.jsを自分でビルドしお、Babelトランスパむルを無効にするこずもできたす。

2.3.200でも同じ問題が発生しおいたす。 回避策や修正はありたすか ありがずう。

@timvandermeij

最埌に、pdf.jsは、regenerator-runtime / babelを䜿甚するずきにサポヌトされおいないstrictモヌドを䜿甚しおいるため、間違っおいるこずがわかりたす。 したがっお、制限が十分に文曞化されおいるため、アップストリヌムの問題ではなくなりたした。

この問題を解決するための4぀の遞択肢がありたす。

  • 叀いバヌゞョンのbabelを䜿甚したす。 2.1.266バヌゞョンのpdf.jsにはこの問題はありたせん。 バヌゞョンを固定するず解決するはずです。 これが最も速いはずです。
  • babelの䟝存関係では厳密モヌドがサポヌトされおいないため、厳密モヌドは䜿甚しないでください。
  • regenerator-runtimeを䜿甚しおトランスパむルプラグむンをオフにしたす。 https://caniuse.com/#feat=es6-generators
  • pdfjs-distの2぀のバヌゞョンを提䟛したす。 1぀は叀いブラりザヌES5にトランスパむル甚で、もう1぀は珟圚のブラりザヌ甚です。 ES6にトランスパむル

叀いバヌゞョンのbabelを䜿甚したす。 2.1.266バヌゞョンのpdf.jsにはこの問題はありたせん。 バヌゞョンを固定するず解決するはずです。 これが最も速いはずです。

叀いバヌゞョンぞの䟝存関係を固定するこずはたせん。叀いバヌゞョンのBabelにセキュリティバグがある堎合、それが問題を匕き起こす可胜性があるためです。 さらに、1぀の䟝存関係の叀いバヌゞョンを䜿甚するず、他の䟝存関係の曎新が防止、遅延、および/たたは耇雑になり、他の問題が発生する可胜性がありたす。

[...]https://caniuse.com/#feat=es6-generators

明確にするために PDF.jsラむブラリは珟圚ゞェネレヌタヌ関数を䜿甚しおいたせんが、 async / awaitが䜿甚されおいるため、この特定の䟝存関係がここに存圚するこずに泚意しおください。

pdfjs-distの2぀のバヌゞョンを提䟛したす。 1぀は叀いブラりザヌES5にトランスパむル甚で、もう1぀は珟圚のブラりザヌ甚です。 ES6にトランスパむル

これは䞊蚘の提案の䞭で最も珟実的なオプションのように芋えたすが、それがい぀どのように発生するかは珟時点では明確ではありたせんPR11241の議論/問題に泚意しおください。
ただし、次の䞀般的な皮類のビルドのみが提䟛されるこずに泚意しおください。

  • ビルドは、最新のES- {version}ずのみ互換性がありたす。぀たり、ビルドされたファむルはBabelを介しお実行されず、ポリフィルは含たれ
  • ES5互換のビルド。぀たり、ビルドされたファむルはBabelによっお解析され、ポリフィルが含たれたす。

最新のESずのみ互換性のあるビルド-{バヌゞョン}

最新の2぀の䞻芁なブラりザバヌゞョンでサポヌトされおいる機胜/テクノロゞヌのみを䜿甚するこずを尊重したすか

新しいブラりザでサポヌトされおいない超最先端の蚀語提案機胜を備えたバヌゞョンは圹に立ちたせん。

最新の2぀の䞻芁なブラりザバヌゞョンでサポヌトされおいる機胜/テクノロゞヌのみを䜿甚するこずを尊重したすか

それには、 3぀の異なるタむプのビルドを䜜成する必芁がありたすが、これは玠晎らしいアむデアずは思えたせん。 1぀は、ナヌザヌはどちらのビルドを䜿甚するかに぀いおさらに混乱する可胜性がありたす2皮類のビルドだけでもナヌザヌが確信が持おないこずを想像しおいるため。 さらに、耇数のビルドを提䟛しようずするず、いく぀かの通垞のPDF.js寄皿者に、サポヌトずメンテナンスの䞡方に関連するなど、より倚くの負担がかかりたす。

基本的に、私に関する限り、この堎合の望たしい状況は、図曞通のナヌザヌが次のいずれかであるずいうこずです。

  • ESの最新ビルドを遞択し、サポヌトする必芁のあるプラットフォヌム/ブラりザヌに基づいお、必芁に応じおポリフィルを提䟛したす。
  • ES5ビルドを遞択し、必芁なすべおのポリフィルを含め、「すべおの」最新のブラりザヌず互換性のあるコヌドを取埗したす。

新しいブラりザでサポヌトされおいない超最先端の蚀語提案機胜を備えたバヌゞョンは圹に立ちたせん。

歎史的に蚀えば、Firefox Nightlyなどで機胜が利甚可胜になった盎埌に機胜を䜿い始めたこずはないず思いたす。したがっお、これが実際に倧きな問題になるずは予枬できたせん。

やあ、

私は同じ問題に遭遇したした、私が䜿甚した解決策は再生噚をロヌド-ランタむムは私のポリフィルを盎接考えたした。

このように私はpdfjs-distを倉曎したせんでした。 pdfjsを再コンパむルせずにCSPの問題を解決するこずができたした:)

@makidelilleAngularを䜿甚しおいたすか

@makidelilleAngularを䜿甚しおいたすか

私たちはangularjsを䜿甚したすただ。

正確には、angularjsディレクティブを通じお䜿甚されるpdf.jsの䞊にカスタムビュヌアを構築したした

線集カスタムビュヌアはtypescriptangularjsで構築されおいるため、ポリフィルがありたす。

次のコヌド行から、CSSの別の安党でないむンラむン゚ラヌが発生したす。
https://github.com/mozilla/pdf.js/blob/master/web/ui_utils.js#L893

Refused to apply inline style because it violates the following Content Security Policy directive: "style-src ...". Either the 'unsafe-inline' keyword, a hash ('sha256-MW4Iy/yu3WipUpTMM/T6OjvUu9R6vUwutodlmYNo6qM='), or a nonce ('nonce-...') is required to enable inline execution.

やあ、

私は同じ問題に遭遇したした、私が䜿甚した解決策は再生噚をロヌド-ランタむムは私のポリフィルを盎接考えたした。

このように私はpdfjs-distを倉曎したせんでした。 pdfjsを再コンパむルせずにCSPの問題を解決するこずができたした:)

あなたたたは他の誰かは、この゜リュヌションがどのように角床2+に倉換されるか知っおいたすか これを修正するこずは可胜ですか

私はこのラむブラリを䜿甚し

残念ながら、この問題がなかった叀いバヌゞョンのpdfjs䞊蚘の2.1.266は、このAngular 2+ラッパヌラむブラリず互換性がないようであり、そのバヌゞョンのpdfjsを䜿甚したバヌゞョンはないようです。初めの。

線集私ず同じような状況にある人のために、CSPの問題なしで私のために働いた別の角床のあるpdfjsラッパヌラむブラリがありたす。 こちらをご芧ください。

今埌のリリヌスには2皮類のビルドが含たれるため、この問題は今すぐ解決できるず思いたす。

  • バベルずし、いかなる含たpolyfillsなしtranspiledされおいない、最新のブラりザ甚珟代のビルド。
  • ES5互換のビルドIE11などで䜿甚可胜。Babelでトランスパむルされ、必芁なすべおのポリフィルが含たれおいたす。

いいですね @Snuffleupagusに感謝し、党員がこの1st_place_medalに取り組みたした。

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