2009-09-15 17 views
5

テキストボックスにhtmlまたはjavascriptを入力するユーザーを停止したいと考えています。asp.netテキストボックスでスクリプトを確認してください

入力を解析し、天使の括弧をチェックするだけで済みます。これを行うより良い方法があるのだろうかと疑問に思っていましたか?

+0

良い質問 - あなたはセキュリティを考えていることを示しています。 +1。 – David

答えて

5

エンジェルブラケットをエンコードされたエンジェルブラケットに置き換えると、ほとんどの問題が解決されることがわかりました。ここには、人々がクロスサイトスクリプトを実行できるすべての方法のためのreferenceがあります。 HTMLやスクリプトの味を止めるための正規表現を作ることは不可能に近いです。

+1

+1何もチェックしないで、途中で正しくエスケープしてください。ユーザーは角かっこを入力することができるはずであり、次のようにページ上に通常の角かっことして表示されます。< >正しいメソッドはHtmlEncode(.NETコントロールがテンプレート内で自動的にエスケープされない場合)と呼ばれ、アンパサンドと引用符(属性値のテキスト)にも影響します。 – bobince

2

入力を検証するために正規表現バリデーターを使用できますか?

3

Page.ValidateRequest = trueを設定すると、これが停止します。

.netバージョン1.1以降(これは思うが)は、デフォルトではtrueに設定されています。

+1

ValidateRequestはまったく偽であり、問​​題の危険な誤解を裏切っています。これは、入力レイヤーで出力の問題(エスケープ)を修正しようとする点で、PHPの非常に参考になったmagic_quotes_gpcに似ています。魔法の引用符のように、あなたのアプリケーションを壊してしまいます(例えば、ここにいた場合は、HTML ''について全く話すことができません)。実際にセキュリティを保証するわけではありません。入力からフィルタを欺くことができます)。 – bobince

+0

私はあなたの言うことを否定するものではなく、ほとんどすべてのアプリケーションでグローバルにオフになり、すべての入出力は手動で検証されます。しかし、この質問は、「ユーザーがテキストボックスにhtmlやjavascriptを入力するのをやめたい」と述べています。 ValidateRequestはこれを行います。 –

+0

確かに。それは正解です...ちょうど正しい質問ではないかもしれません! – bobince

1

Page.ValidateRequestは、オフにしない限り、これを停止します。

しかし、OWASPのガイドライン(ほとんどすべての有能なセキュリティガイドライン)では、検証で不正な文字を制限するべきではなく、特に許可された文字のみが使用されるようにフィルタする必要があることを示しています。優れたセキュアなコーディングプラクティスについて

http://en.wikipedia.org/wiki/Secure_input_and_output_handling

http://www.owasp.org/index.php/Top_10_2007-A1

私はここで開始し、今後の参考のためにサイトをブックマークします。 http://www.owasp.org/index.php/Top_10_2007

0

私はこのhtmlユーティリティーに出会いました。このコードでは、入力が許可されているホワイトリストのタグを使用します。スクリプトは、入力テキストをフォーマットし、クロスサイトスクリプティング攻撃に使用できるタグとスクリプトを削除します。

あなたの目的のために、ホワイトリストにタグを入れることはできませんでした。

Html utilty

関連する問題