2009-07-24 6 views
2

XmlTextWriterを使用して、一部のデータをシリアライズして保持しています。シリアル化するフィールドのいくつかは、ユーザーの入力(ユーザー名など)に基づいています。今日私はXmlTextWriterWriteElementStringメソッドを使用しています。C#:XMLテキスト値をXmlTextWriterでサニタイズしますか?

私の質問です:WriteElementStringの2番目のパラメータは、書き込まれるテキスト値です。私はどのように書く前にそれを消毒することができますか?

コード例:

XmlTextWriter writer = new XmlTextWriter("filename.xml", null); 

writer.WriteStartElement("User"); 
writer.WriteElementString("Username", inputUserName); 
writer.WriteElementString("Email", inputEmail); 
writer.WriteEndElement(); 

writer.Close(); 

変数inputUserNameinputEmailは、ユーザーが入力され、私は/サニタイズ書き込みする前に、それらを脱出したいと思います。

これを達成する最もよい方法は何ですか?

答えて

3

正確にそこから脱出する必要はありますか? WriteElementStringは、すべてがすでにXMLで必要なエスケープ処理を行います(すなわち& - >&amp;< - >&lt;、など)あなたが安全な最も安全なのでしょうCDATAとして、これらの値は、XMLで行うことができます可能性があり

+0

WriteElementStringは完全に安全ですか? (それが当てはまると分かりますが、それが当てはまるとは分かりませんでした) –

+0

出力が有効なXMLであることを保証する意味で "安全"です。同じ文字列を取得します。 –

-2

事前に値を確認する必要がありますRegExまたはその他の検証。

+0

なぜdownvote? CDATAはあなたが望む内部のあらゆるものを含むXMLを有効に保つ最も安全な方法ですか? –

+0

CDATAはまったく問題ありません。それはそれをエスケープすることなくテキストを書く単なる方法です。 OPによって使用されるコードは、すべてを適切にエスケープします。 –

+0

CDATAとして書かれているため、エスケープされませんが、正しく動作します。 –

関連する問題