2

因此,我试图通过 Js 中的 Post 将字符串作为参数提交到 asp.net 服务,但我遇到了一些困难。在声明之前,我无权访问服务器,也无法访问验证,我严格从外部客户端访问。我收到了这个回复

System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (message="...t;img src='http://192.168.1...").
    at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)
    at System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection)
    at System.Web.HttpRequest.get_Form()
    at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
    at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
    at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

我发送的消息是:

xcvxzcvzxcvxcvzxcv< br /><img src='http://192.168.1.1:82/UserUploads/Images/65968/20130122020024996.jpg' alt='User Image' />

我使用以下编码:

htmlEncode: function(str) {
        str = str.replace(/&/g, '&amp;');
        str = str.replace(/'/g, '&#39;');
        str = str.replace(/"/g, "&quot;");
        str = str.replace(/</g, '&lt;');
        str = str.replace(/>/g, '&gt;');
        return str;
    },

产生:

xcvxzcvzxcvxcvzxcv&lt; br /&gt;&lt;img src=&#39;http://192.168.1.1:82/UserUploads/Images/65968/20130122020802027.jpg&#39; alt=&#39;User Image&#39; /&gt;

我已经运行了几个验证器并检查了我的编码,但我无法找出导致问题的原因。我唯一的猜测是 http:// 导致了问题,如 javascript 错误所示,但我不确定。任何帮助或见解将不胜感激。

4

2 回答 2

0

问题是'. 根据 user409762, 的组合在 asp.net 中被标记为危险。

所以现在我的编码看起来像这样并且工作正常。

htmlEncode: function(str) {
    str = str.replace(/&/g, '&amp;');
    str = str.replace(/"/g, "&quot;");
    str = str.replace(/</g, '&lt;');
    str = str.replace(/>/g, '&gt;');
    return str;
},
于 2013-01-22T22:47:12.593 回答
0

使用 Jquery,您可以像此链接一样执行编码和解码。

function htmlEncode(value) {
    return $('<div/>').text(value).html();
}

function htmlDecode(value) {
    return $('<div/>').html(value).text();
}
于 2015-11-05T17:35:56.900 回答