2017-12-31 40 views
1

iframeにサービスを提供する意図でHTMLがGoogle App Engineにアップロードされている場合、そのスクリプトを削除するなど、スクリプトやその他の悪意のあるHTMLを削除するなど、どのような方法で削除するのが最適ですか?Google App EngineでPythonでhtml blobのアップロードをサニタイズする方法は?

私はこれを行うには良い方法であり、任意のヘルプははるかに高く評価されている場合、私は疑問に思って

 reader = blobstore.BlobReader(binfo.key()) 
     value = reader.read() 
     newHtml = lxml.html.clean.Cleaner().clean_html (value) 
     #save newHtml as the blob in google cloud store to be served. 

を考えています。

NB:アンカーを削除したり、アンカー(またはソース)を非相対的で安全なhttpなどにする方法がある場合は、素晴らしいこともあります(または完全に禁止する)。

答えて

1

悪意のあるコンテンツをHTMLに埋め込む方法がたくさんあるので、これはうまく解決するのが難しい問題です。 script要素はおそらく最もよく知られている/共通ですが、form,input、およびimg要素も悪用される可能性があります。また、イベントハンドラを介してほとんどの要素に悪質なJSを含めることもできます。 More information about XSS from OWASP、あなたを始めましょう。

あなたはPythonを使用しているので、ここでは、HTMLを消毒するためのいくつかのライブラリがあります。何が価値がある、あなたは(ホスティングしているiframeにユーザーが提供するHTMLをホストするアプリケーションにアクセスすることから悪質なコンテンツを防止するための一つの方法であるために

iframeブレークアウトを防止するための対策を講じることをお勧めします)。ただし、そこにホストされているコンテンツが常に信頼できるとは限りません。

希望すると便利です。

+0

多くのありがとうございます。私はlxml.cleanを使用しています。これは多くのものを取り除き、人気のある消毒剤と思われます。しかし、あなたが言及した他のものもチェックアウトします。 Btw、「iframe breakout」と言ったら、どういう意味ですか?また、私はiframeを 'sandbox'することを考えています - そのような場合には一般的に推奨されていますか? – user1055761

+0

ええ、[sandboxed iframes](https://www.html5rocks.com/jp/tutorials/security/sandboxed-iframes/)は、物事をもう少し詳しくロックする機能を提供します。また、あなたの使用に適している場合は、['X-Frame-Options'](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options)の設定を検討することもできます-場合。 ここにいくつかの情報があります: * [Clickjacking Defenseチートシート](https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet) * [最近のスレッドのフレーム破棄について](https:// stackoverflow。 com/questions/958997/frame-buster-buster-code-needed) – erichiggins

関連する問題