2016-04-12 29 views
0

私は入力制御.NetのHtmlInputTextコントロールで特殊文字をエンコードする方法は?

<input id="firstNameField" type="text" runat="server" /> 

を持っていると私は私が「!」をエンコードするにはどうすればよい

firstNameField.Value = "Me!" 

それに値のサーバー側を与えます文字を出力する?私はこの試みた:

firstNameField.Value = "Me&#33;" 

をしかし、.NETはこれに応答します。テキストボックスにMe&#33;を参照するには、ユーザーを引き起こして

<input name="firstNameField" type="text" id="firstNameField" value="Me&amp;#33;" /> 

。私はこれが.NETの内蔵XSS保護の一部であることを理解しています。アンパサンド以外の特殊文字をエンコードするにはどうすればよいですか?

+0

「私」を使って問題がありますか? – ConnorsFan

+0

私は「私!一例として。問題は '! 'とその他の特殊文字です。私たちはCenzicのHailstormを使用して、Webサイトでセキュリティの脆弱性をスキャンします。 Hailstormの最新バージョンでは、入力フィールドの暗号化されていない '! '文字がXSSの脆弱性であるとみなされています。したがって、私のウェブサイトは実際よりも安全ではないと評価しています。実際には、それは有効な脆弱性だとは思わないが、誰が知っているのだろうか?ハッカーに最小の亀裂を与え、彼らはそれを通してMackトラックを運転するでしょう。 – Aaron

+0

まだ使用していない場合は、ASP.NET AntiXSSライブラリへのリンクがあります:https://msdn.microsoft.com/en-us/security/aa973814.aspx?これらの問題を解決し、Mackトラックがサーバーにクラッシュするのを防ぐのに役立ちます。 – ConnorsFan

答えて

0

の後ろにコード内で値を代入しながら、私はそうのようなHttpEncoderクラスを拡張巻き上げ:その後、

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 
using System.Web; 
using System.Web.Util; 
using System.Text; 
using System.IO; 

/// <summary> 
/// Summary description for CustomHttpEncoder 
/// </summary> 
public class CustomHttpEncoder : HttpEncoder 
{ 
    // 
    // TODO: Add constructor logic here 
    // 
    public CustomHttpEncoder() 
    { 
    } 

    protected override void HtmlEncode(string value, TextWriter output) 
    { 
     if (value != null) { 
      MyHtmlEncode(value, output); 
     } 
    } 

    protected override void HtmlAttributeEncode(string value, TextWriter output) 
    { 
     if (value != null) { 
      MyHtmlEncode(value, output); 
     } 
    } 

    private void MyHtmlEncode(string value, TextWriter output) 
    { 
     if (value != null) { 
      string encodedValue = ""; 

      for (int i = 0; i <= value.Length - 1; i++) { 
       byte[] asciiVal = Encoding.ASCII.GetBytes(value.Substring(i, 1)); 
       encodedValue += "&#" + asciiVal(0).ToString + ";"; 
      } 

      output.Write(encodedValue); 
     } 
    } 

} 

そして、Web.configファイルでそれを参照します:

<system.web> 
    <httpRuntime encoderType="CustomHttpEncoder" /> 

はその後、私がしなければならなかったすべては、通常のように値を設定した

自動的に最大のスズ箔の帽子のセキュリティのためのすべての文字をエンコードする0
firstNameField.Value = "Me!" 

<input name="firstNameField" type="text" id="firstNameField" value="&#77;&#101;&#33;" /> 

これは私の目的は十分に似合う、私はそれが他の状況でPITAている見ることができました。その場合、MyHtmlEncode()はそのような状況に合わせて変更する必要があります。

0

使用HttpUtility.HtmlEncode(「テキスト」)

+0

残念ながら、それは動作しません。 HtmlEncode関数は、これらの文字のみを符号化します。< > "&'感嘆符をエンコードしません。 – Aaron

関連する問題