2011-10-19 14 views
2

私たちは、ユーザが理由のある別のユーザから何かを拒絶できるウェブサイトを持っています。理由は電子メールで他のユーザーに送信されます。UserInputから文字列を保護する方法

他のユーザーにはどのような文字を送信できますか? 私は、不要な文字の正規表現検索を行うつもりはなく、その理由で「潜在的に」「安全な」文字を保持したいだけです。例えば

理由:現在

"Hello bDear User B" 

私はちょうど「」文字の配列をしていると経由して、私の「安全」の条件を定義しています:

"Hello <b>Dear User B" 

はに変換されます

char.IsLetterOrDigit || char.IsPunctuation || char.IsWhiteSpace 

もっと良い技術はありますか?

+0

「Hello Dear User B」と「Hello bDear User B」の違いは分かりませんが、2番目の項目のナンセンスbDearを除きます。 – TheBlastOne

+0

あなたの質問は不明です、親切にそれを言い換えてください。 – Zenwalker

+0

@hacktickああ、あなたの編集はポイントを明確にしました。 – TheBlastOne

答えて

3

電子メール本文にHTMLを完全に細かく使用することができます。これにより、よりきれいな書式設定が可能になります。ユーザー入力で​​を使用してから、HTMLで危険なものをフィルタリングするために電子メールで送信することができます(例:<script>タグなど)。

+0

+1 antixssライブラリのリンク - thanks –

+0

+1覚えておいてください。 – TheBlastOne

+0

しかし、私は、AntiXSSがそれ自身の新しいセキュリティホールを開くのに十分複雑であると確信しています:O – TheBlastOne

0

あなたが126にASCII値32を持つキャラクターがあなたのために安全であると思えば、そして、あなたはあなたの文字列のhtmlEncode方法でC#でHttpEncoderクラスを使用して試みることができる

bool bad = value.Any(c => c < 32 || c > 126); 
+0

これは、中国語や他の言語のASCII文字以外の文字をサポートしません。そうでなければ、これは西半球の非国際的なアプリのための十分な開始アプローチとなるだろう。 –

+0

私は漢字を期待していませんでした。:D –

+1

@hacktick - 要件を思いついて質問を編集してください。中国語をサポートするための要件を変更することは不公平です。 –

1

を使用することができます。 これはのhtmlに相当するすべての<をltに変換します。安全な文字列を返す。

& lt;電子メールのようなものであれば、潜在的に安全な回避策とみなすことができます。

コメントをデータベースに挿入する場合は、このメソッドを使用することはお勧めできません。これは、SQLインジェクションプルーフではないためです。その場合、htmlencodeを使用して電子メールを送信し、パラメータを使用してデータベースに挿入することができます。

関連する問題