スクリプトを使ってimgを動的に挿入するときに問題があります。C#でユーザ入力をサニタイズする - 最もクリーンな方法?
newPlace.find('.PlaceThumb').append('<img src="' + place.ThumbnailUrl + '" alt="' + place.Name + '" width="50px" style = "padding:2px;"/>');
誰かが自分の地名ができます:
は場所のため、画像を挿入するために、次のコードを取る「のonload =」警告(「こんにちは」)」とタグがレンダリングされるように:
<img src="/item.aspx?id=123" alt="" onload="alert('hi')" width="50px" style = "padding:2px;"/>
イメージがロードされると、スクリプトが実行されますが。
のみとタグのonload属性をサポートしていますが、これはユーザの入力を信用したことがないのは良い教訓です。
これは何をやっての「正しい」(、素敵なエレガントな、きれいな、一般的な)方法です:
newPlace.find('.PlaceThumb').append('<img src="' + place.ThumbnailUrl + '" alt="' + place.Name.replace('"', '"') + '" width="50px" style = "padding:2px;"/>');
私はあなたがそれらをUUencodeするだろう文字列に演算子を定義することができ、テンプレートと多分考えていた - と類似C#で@のプレフィックスが付いた文字列がバックスラッシュとはどのように特別な意味を持っているかを指定します。この機能を標準の.net文字列クラスに追加する方法はありますか?
btw - さらに研究すると@は、文字列リテラルだけで動作するコンパイラレベルの構文砂糖のようです。 –
コードはC#コードではありません.JavaScriptのようです。 – Oded
これはXSS防止に関するものです。一つのことについて考えてみましょう:javascriptを使ってクライアント側でアルファベット文字にユーザ入力を制限し、サーバ側では英数字以外の文字をすべて入力文字列から削除することで検証します。 – frenchie