0

私のweb2pyアプリでは、アイテムのリストを処理しています。ユーザーは各アイテムのリンクをクリックして選択できます。アイテムには、UUID、タイトル、および説明があります。わかりやすいように、アイテムの説明もリンク タイトルとして表示されます。説明内のタグによるインジェクションを防ぎ、エスケープするために、次のように XML サニタイザーを使用しています。

A(this_item.title, \
  callback = URL('item', 'select', \
                 vars=dict(uuid=this_item.uuid), user_signature=True), \
  _title=XML(str_replace(this_item.description, {'\r\n':'&#13;', '<':'&#60;', '>':'&#62;'}), sanitize=True))

Python 2 を使用すると、すべて問題ありませんでした。Python 3 に切り替えたので、次の問題があります。説明に改行が含まれている場合、サニタイザーは機能しなくなります。たとえば、私の str_replace ルーチンによって生成される次の文字列は、Python 2 では XML ヘルパーによってサニタイズされても問題ありませんが、Python 3 ではサニタイズされません。

Header&#13;&#13;Line1&#13;Line2&#13;Line3

によってエスケープされた改行のサニタイズ&#13;は、Python 3 の問題です (Python 2 では問題ありません)。それ以外は、XML ヘルパーがサニタイズするのに問題ありません (たとえば、より小さいか大きいか、記述がない場合は として生成されるため、これらが必要です<no description>)。

Python3 で web2py を実行している XML ヘルパーによって改行をサニタイズするにはどうすればよいですか?

ご支援ありがとうございます。

よろしくクレメンス

4

1 に答える 1