在代碼中值我結束了擴展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" />
之後,所有我需要做的就是設置的值正常人一樣:
firstNameField.Value = "Me!"
自動編碼每個字符的最大錫箔帽子安全:
<input name="firstNameField" type="text" id="firstNameField" value="Me!" />
這適合我的目的不夠好,但我可以看到它在其他情況下是一個PITA。在這種情況下,需要修改MyHtmlEncode()
以適應這種情況。
使用「我!」有沒有問題? – ConnorsFan
我用「我!」舉個例子。問題是'!'和其他特殊字符。我們使用Cenzic的Hailstorm來掃描我們的網站以查找安全漏洞。最新版本的Hailstorm將輸入字段中未編碼的「!」字符(其中包括其他字符)視爲XSS漏洞,因此它將我的網站評爲比實際更不安全。事實上,我認爲這不是一個有效的漏洞,但是誰知道呢?給黑客最小的裂縫,他們會通過它開一輛麥克卡車。 – Aaron
如果您還沒有使用它,可以通過以下鏈接指向ASP.NET AntiXSS庫:https://msdn.microsoft.com/en-us/security/aa973814.aspx?它可以幫助你解決這些問題,並防止Mack卡車撞上你的服務器。 – ConnorsFan