2016-05-25 3 views
5

編集可能なエディタを作成しています。これらの拡張機能としてjavascriptを使用してエディタページで文法のような拡張機能を有効にすると、エディタ自体にhtmlが挿入されます。データを保存する際に多くの問題を引き起こしています。コンテンツ編集可能エディタで文法のように拡張機能やアドオンを停止する方法

チェック済み中程度のエディタと拡張機能/アドオンは動作しません。この種の問題に対する参考資料または解決策はありますか?多くを検索しましたが、解決策を見つけることができませんでした。事前に感謝します

+1

はい、Grammarlyにも問題がありました(ただしChromeの場合)。それは現在ポストされているペイロードを大量に膨らませているようで、IISで設定された許容サイズを超えて500のエラーが発生します。 – Dijkgraaf

+1

私はその問題について電子メールで連絡し、自分のウェブサイトのプラグインを無効にしました。私のために働いた –

答えて

2

一般にあなたはエクステンションと戦うことはできません。それらは、ブラウザベンダによって作成者の意図より優先されるユーザーの意図を表します。彼らはまた、ウェブサイトよりも多くの権限を持っています。彼らはCSPをバイパスすることができます。

あなたが勝つことができる戦いではありません。あなたは

  • を持って

    オプションは、とにかく試してください。その場合、アドオンソースはソース形式で出荷されているので、特定の一連のイベント(保存の前にコンテンツ編集可能にすることはできません)によって注入マークアップが削除されるのを確認できます。

  • アドオンあなたはミディアムエディタ彼らはのcontentEditableを使用していない

    チェック

、そのような行動を検出した場合、著者と

  • 低侵襲性であることをそれらを求めるには、ユーザーに警告します。

    https://medium.engineering/why-contenteditable-is-terrible-122d8a40e480

  • 2

    あなたが永続/患者あるのであれば、特にGrammarlyのために、あなたはチケットを提出することができますし、彼らはあなたのサイト上で自分のプラグインを無効にします。彼らは実際の問題を修正するつもりはない、彼らはまだあなたのエディタに余分なペイロードの約4MBを注入する、私はまだDevとQAのサイトでプラグインを使用するときに問題が表示されます。

    私は、ユーザーの検出/警告/ページの無効化というアプローチを採用しました。 Firefox用のメッセージは少し違っていましたが、サンプルを簡潔にするため、FF変数と違反しているユーザーのログを取り除きました。あなたは<textarea>要素にatribute data-gramm_editor="false"を追加することができますGramarlyを修正するには

    /* vars intentionally over complicated to make detection more difficult */ 
    //Chrome Message: gc; 
    var r = /\{0\}/g; 
    var gc = "PHN0eWxlPg0KCS5pY29uIHsNCgkJLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsNCgkJZGlzcGxheTogaW5saW5lLWJsb2NrOw0KCX0NCgkuaWNvbiB7DQoJCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQoJCWJhY2tncm91bmQtc2l6ZTogMTAwJTsNCgkJaGVpZ2h0OiA3MnB4Ow0KCQltYXJnaW46IDAgMCA0MHB4Ow0KCQl3aWR0aDogNzJweDsNCgl9DQoJLmljb24tZ2VuZXJpYyB7DQoJCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKQUFBQUNRQVFNQUFBRGRpSEQ3QUFBQUJsQk1WRVVBQUFCVFUxT29hU2YvQUFBQUFYUlNUbE1BUU9iWVpnQUFBRkpKUkVGVWVGN3QwY0VOZ0RBTVE5RndZZ3hHNldqcGFJekNDQXhReFZnZ0Z1RGlDdmxMT2VSZEhSOXl6am5jSFZvcTNucHUrd1FVclV1Skh5bFNUbUJhZXNwSnlKUW9PYlVleXhEUWIzYkVtNUF1ODFjMHBTQ0Q4SFlBQUFBQVNVVk9SSzVDWUlJPSIpOw0KCX0NCgkuaW50ZXJzdGl0aWFsLXdyYXBwZXIgew0KCQlib3gtc2l6aW5nOiBib3JkZXItYm94Ow0KCQlmb250LXNpemU6IDFlbTsNCgkJbGluZS1oZWlnaHQ6IDEuNmVtOw0KCQltYXJnaW46IDEwMHB4IGF1dG8gMDsNCgkJbWF4LXdpZHRoOiA2MDBweDsNCgkJd2lkdGg6IDEwMCU7DQoJfQ0KCS5ibHVlLWJ1dHRvbiB7DQoJCS13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7DQoJCWJhY2tncm91bmQ6IHJnYig2NiwgMTMzLCAyNDQpOw0KCQlib3JkZXI6IDA7DQoJCWJvcmRlci1yYWRpdXM6IDJweDsNCgkJYm94LXNpemluZzogYm9yZGVyLWJveDsNCgkJY29sb3I6ICNmZmY7DQoJCWN1cnNvcjogcG9pbnRlcjsNCgkJZmxvYXQ6IHJpZ2h0Ow0KCQlmb250LXNpemU6IC44NzVlbTsNCgkJbWFyZ2luOiAwOw0KCQlwYWRkaW5nOiAxMHB4IDI0cHg7DQoJCXRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsNCgl9DQo8L3N0eWxlPg0KPGJvZHkgaWQ9InQiIGNsYXNzPSJuZXRlcnJvciIgc3R5bGU9ImZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBUYWhvbWEsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogNzUlO2JhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7IGNvbG9yOiAjNjQ2NDY0OyI+DQo8ZGl2IGlkPSJtYWluLWZyYW1lLWVycm9yIiBjbGFzcz0iaW50ZXJzdGl0aWFsLXdyYXBwZXIiIGpzdGNhY2hlPSIwIj4NCiAgICA8ZGl2IGlkPSJtYWluLWNvbnRlbnQiIGpzdGNhY2hlPSIwIj4NCiAgICAgIDxkaXYgY2xhc3M9Imljb24gaWNvbi1nZW5lcmljIj48L2Rpdj4NCiAgICAgIDxkaXYgaWQ9Im1haW4tbWVzc2FnZSIganN0Y2FjaGU9IjAiPg0KICAgICAgICA8aDEgY2xhc3M9ImhlYWRpbmciPlBvdGVudGlhbGx5IGRhbmdlcm91cyBwbHVnaW4gezB9IGRldGVjdGVkLjwvaDE+DQogICAgICAgIDxwPlBsZWFzZSBkaXNhYmxlIG9yIHJlbW92ZSB0aGUgezB9IHBsdWdpbiB0byBjb250aW51ZS48L3A+DQogICAgICAgIDxkaXYgaWQ9InN1Z2dlc3Rpb25zLWxpc3QiPg0KICAgICAgICAgIDxwPjwvcD4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aXBweS1vdmVyZmxvdyI+PGRpdiBjbGFzcz0iemlwcHktY29udGVudCIgc3R5bGU9Im1hcmdpbi10b3A6IDBweDsgdHJhbnNpdGlvbjogbWFyZ2luLXRvcCAwLjIxOHMgZWFzZS1vdXQ7IG92ZXJmbG93OiBhdXRvOyI+DQoJCQkgIDxwPlRvIHJlbW92ZSBhbiBleHRlbnNpb24gZnJvbSBHb29nbGUgQ2hyb21lOjwvcD4NCgkJCTxvbD4NCgkJCQk8bGk+SWYgdGhlIGV4dGVuc2lvbiBoYXMgYW4gaWNvbiBpbiB5b3VyIENocm9tZSB0b29sYmFyLCB5b3UgY2FuIHJpZ2h0LWNsaWNrIG9uIHRoZSBpY29uLjwvbGk+DQoJCQkJPGxpPlNlbGVjdCA8c3Ryb25nPlJlbW92ZSBmcm9tIENocm9tZS48L3N0cm9uZz48L2xpPiAJCQkJDQoJCQkJPGxpPkEgbm90aWNlIHRvIHJlbW92ZSB0aGUgZXh0ZW5zaW9uIHdpbGwgYXBwZWFyLiBDbGljayZuYnNwOzxzdHJvbmc+UmVtb3ZlPC9zdHJvbmc+LjwvbGk+DQoJCQk8L29sPg0KCQkJICBvcjogPGJyIC8+DQoJCQkgIDxvbD4NCgkJCQk8bGk+T24geW91ciBicm93c2VyLCBjbGljayZuYnNwOzxzdHJvbmc+bWVudTwvc3Ryb25nPiZuYnNwOzxpbWcgc3JjPSJodHRwczovL2xoMy5nb29nbGV1c2VyY29udGVudC5jb20vSE96dGhvamdJOFQyWUMxbi0xUmlxWnQ3eEQ0T2xyWGJhc0RzbXQ0RFJZR01zX3JoUXduRmhvQVdVc1Q0PXcxOCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBhbHQ9IiI+LjwvbGk+DQoJCQkJPGxpPlNlbGVjdCZuYnNwOzxzdHJvbmc+TW9yZSB0b29scyAmZ3Q7IEV4dGVuc2lvbnM8L3N0cm9uZz4uPC9saT4NCgkJCQk8bGk+T24gdGhlIGV4dGVuc2lvbiB5b3Ugd2FudCB0byByZW1vdmUsIGNsaWNrJm5ic3A7PHN0cm9uZz5SZW1vdmUgZnJvbSBDaHJvbWU8L3N0cm9uZz4mbmJzcDs8aW1nIHNyYz0iaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2I2ZkxLbGUyRUFjaEsycEJpOTBzTWlpYmJzaGU5TWdPQ2JmTVN2R21DUTh2UUs4Y1pRMW91RmpBMm9zTz13MTgiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgYWx0PSIiPi48L2xpPg0KCQkJCTxsaT5BIG5vdGljZSB0byByZW1vdmUgdGhlIGV4dGVuc2lvbiB3aWxsIGFwcGVhci4gQ2xpY2smbmJzcDs8c3Ryb25nPlJlbW92ZTwvc3Ryb25nPi48L2xpPg0KCQkJICA8L29sPg0KCQkJPC9kaXY+PC9kaXY+DQoJCQk8YnV0dG9uIGlkPSJyZWxvYWQtYnV0dG9uIiBjbGFzcz0iYmx1ZS1idXR0b24iIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5ocmVmPXdpbmRvdy5sb2NhdGlvbi5ocmVmOyI+UmVsb2FkPC9idXR0b24+ICAgICAgICANCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQogIDwvYm9keT4="; 
    var s = ""; 
    
    MutationObserver = window.MutationObserver || window.WebKitMutationObserver; 
    
    var observer = new MutationObserver(function (mutations, observer) { 
        for (mutation in mutations) { 
        /*console.log(mutations[mutation].target.outerHTML);*/ 
        var m = mutations[mutation].target.hasAttribute("data-gramm_id"); 
        if (m) { 
         s = window.atob(gc).replace(r, "Grammarly"); 
    
         var newDoc = document.open("text/html", "replace"); 
         newDoc.write(s); 
         newDoc.close(); 
        } 
    } 
    }); 
    observer.observe(document, { 
        subtree: true, 
        attributes: true 
    }); 
    
    +0

    おかしい。私たちはコンテンツにフラグを立て、それを公開することを拒否します。 – Michael

    +1

    影響を受けたページがペイロードをサーバーに送り返し、そのコンテンツを第三者に電子メールで送信しようとしていたので、肥大化したフォームの投稿を処理する必要がない方が良いことが分かりました。プラグインを削除するようにユーザーに促すだけです。 – jbrianj

    8

    +0

    うまくいけば、これは非常に興味深いです。ドキュメントへの参照やリンクがありますか? – Michael

    +0

    私はこれについての文書を見るのが好奇妙だろう。テストしたところ、「真」か「偽」のどちらかで動作するようです。 – ACIDSTEALTH

    +1

    詳細については、[this](https://github.com/facebook/draft-js/issues/616#issuecomment-343596615)の問題を確認することができます。 –

    関連する問題