2017-01-05 27 views
2

ユーザー入力を文字列に埋め込む必要があります。たとえば、「<ユーザー>がメッセージを送信しました。ユーザー入力の右から左/右へのオーバーライド文字の処理

ユーザー入力に方向性オーバーライド文字(U + 202DまたはU + 202E)のいずれかが含まれていると問題が発生します。 "<User>"にRLO文字が含まれている場合、表示される文字列は "<ユーザー>がメッセージを送信しました"となります。

私の質問はこれをどのように処理するのが最善かです。 RLOとLROの合法的な使用はありますか、またはそれらを妥当な選択肢から除外していますか?そうでなければ、おそらく私は、ユーザー入力が "左から右への埋め込み"(U + 202A)と "Pop Directional Formatting"(U + 202C)アンバランスなPDF文字が含まれています。

+0

「RLOとLROの正当な用途はありますか?」とあります。たとえば、ヘブライ語やその他のRTL言語を引用しています。それが起こるかどうかを決める必要があります。 – BurnsBA

+0

@BurnsBA:なぜRTLテキストを引用するのにRLOが必要ですか?私はいくつかのLTRテキストの真中にヘブライ語のスクリプトを置くことができます。 – richvdh

+0

私は、ユーザが単語/フレーズ/センテンスの逆順を綴る方法を理解するのに時間がかかることに懐疑的です。 – BurnsBA

答えて

2

RLOとLROの正当な用途はありますか、それとも可能性のあるオプションを削除していますか?

他のすべての文字は、not suitable for use in markupと一緒に削除します。

正当な理由がありますが、実際のアラビア語/ヘブライ語/ etcキーボードはBiDi制御文字を入力できないため、悪意のあるユーザー以外のユーザーの入力では表示されません。

+0

ありがとう@bobince。それを取り除くのが正しいことです。 – richvdh

+0

私は明示的にここでマークアップを使用していないことに注意する価値があります(もし私が問題を解決する要素に入力をラップすることができたら)そのリンクの勧告が適用されることは明らかです。私はまだこれらの文字の本物でない悪意のある使用があるかどうかにも関心があります。 – richvdh

関連する問題