お世話になります。
前提
現在、記事投稿が可能なWebアプリをFlaskを使用して開発しています。
記事をデータベースに保存する際にはXSS対策のため、bleachを使用してHTMLは基本的にエスケープしていました。
公式ドキュメント
簡単な使い方
現状のプログラム
bleachでは一部タグや属性、スタイルといったものをホワイトリストとしてエスケープせずフィルターを透過させることも可能です。imgなどは透過させていました。
XSSは避けたかったのでscriptタグはホワイトリストには入れていませんでした。
そのなかでTwitterno埋め込みを許可したい状況になりました。YouTubeやGoogleMapの埋め込みにはiframeしか使用しないので、問題はなかったのですが、
Twitterの埋め込みの場合にはscriptタグが必要らしく、現状ではbleachのフィルターを透過できません。
かといってscriptタグをホワイトリストに入れてしまったらJavaScriptの実行が容易になってしまい、悪意のあるコードによるXSS攻撃の可能性も大きくなってしまいます。
主な質問
XSS対策とTwitter埋め込みを両立させる方法はあるのでしょうか。
自分で考えた方法
ホワイトリストにscriptタグを追加し、外部読み込み先をTwitterのドメインに限定し(やり方はまだ考えていません)、scriptの開タグから閉タグまでの中身を全消去(Twitterの埋め込みコードのsciptタグは外部からの読み込みのみで、直接のコード記述が無いため)
問題点
- ホワイトリストにおいて、属性の値まで指定(限定)する方法があるのかまだわからない
- scriptタグ内のコードをすべて消去するにはPython内でHTMLの解釈が必要となり、BeautifulSoupの使用を考えたが、消去する方法が今の所わからない
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/18 02:49