2017-10-03 10 views
0

大規模なコード再生成が進行中であるため、大規模なコンポーネントがセキュリティオーバーホールを受けているWebアプリケーションがあります。そのため、私たちはhtmlエンティティの二重エスケープに関する問題を抱えています。例えばjavascriptエンティティデコードのセキュリティへの影響次にエンコード

enter image description here 問題はすでに我々トーストウィジェットに渡されるときにエンコードされたHTMLの中のi18n'd文字列から生じる - と新しいトーストウィジェットは再びHTMLを文字をエンコードしています。

の質問は、これを行うのいずれかのセキュリティへの影響は、我々は大規模なコードベースを移行しながら、二重エンコードの問題を回避するために

Entities.encode(Entities.decode(string)); 

(擬似コードで)があるのですか?デコードを最初に通過するエンコードされていない文字列に関連する問題はありますか?

+0

コードを作成している場合、どのように「セキュリティの影響」がありますか? – guest271314

+0

エンティティエンコードは、HTMLが正しくレンダリングされるようにします。それはセキュリティとは関係ありません。 – PHPglue

+0

@ guest271314メッセージにユーザーのコンテンツが含まれている可能性があります。 – buggedcom

答えて

1

また、コードがページに書き出される時点でエンコードするようにページを設計する必要があります。これにより、正しいコンテキストをエンコードすることが保証され、二重エンコードが回避されます。しかし、すべてのコードを実行して修正することが実現できない場合があります。

セキュリティの観点からは、「安全な」HTML(攻撃者はコードコンテキストに侵入することはできません)になります。いつものように、正しいコンテキストに正しいエンコーディングを使用し、エンティティを引用していることを確認する必要があります。

しかし、あなたは機能的回帰に終わる可能性があります。データがもともと有効な符号化文字(& lt)を含んでいた場合、それらは符号化された等価物(<)として表示されます。

もちろん、二重エンコーディングの回帰を避けるためにこれを行う可能性が高いので、これは喜んでトレードオフになる可能性があります。また、完全なエンコードを使用している限り、安全であるはずの限られた共通文字セットをデコードすることを試みて制限することもできます。

関連する問題