0

在测试通过 jQuery ajax 从用户发送到服务器的输入时,我收到此错误“从客户端检测到潜在危险的 Request.Form 值”。只有当我故意在输入 ex 中放置一个单双引号 html 字符 "<s"c'o<>" 作为我的用户名时,它才会出现。但是,我仍然希望能够优雅地编码和解码用户尝试输入的任何错误输入。

这是客户端jquery

    var email = encodeURIComponent($('#loginEmail').val());  
    var password = encodeURIComponent($('#loginPassword').val());

    $.ajax({
        async: false,
        url: 'Account/CheckLogin',
        dataType: 'JSON',
        contentType: 'application/json',
        data: {
            email: email,
            password: password
        },
        success: function (resp) {
            alert(resp.valid);
            if (resp.valid == "false") {
                isValid = false;
                $('.errorspan').show();
            }
        }
    });

控制器代码实际上并不重要,因为错误在到达第一行的断点之前就被抛出了。在我有机会处理代码之前,似乎 Asp.net 试图将其作为 ajax 传递。我的问题是 - 为什么 encodeUriComponent() 会发生这种情况?

4

1 回答 1

1

您需要关闭服务器端请求验证,请参见此处的示例。

至于为什么会这样?微软基本上假设任何不知道如何关闭请求验证的人也不能信任如果往返到数据库并放回页面而不考虑编码可能有害的数据。多年来,这可能拯救了很多人。URI 编码不会“隐藏” '.NET 中的“危险”,至少在 Firefox 中是这样。

于 2013-03-14T22:06:21.170 回答