在c#中,用户是否可以禁用服务器端验证?

本文关键字:服务器端 验证 用户 是否 | 更新日期: 2023-09-27 18:13:22

我有一个web应用程序,用户只能从一个表单输入出生日期。我有asp.net验证器以及在save方法被调用之前调用的服务器端验证方法。

以下是服务器端验证的代码:

 private bool ValidateData(out string error)
    {
        error = string.Empty;
        //Validate Date of Birth
        TextBox txtDOB = (TextBox)clientinfo.FindControl("txtDOB");
        if (!string.IsNullOrEmpty(txtDOB.Text.Trim()))
        {
            DateTime dob = Convert.ToDateTime(txtDOB.Text.Trim());
            if (dob >= DateTime.Now.Date)
            {
                error = error + "Client can not be less than 7 years and greater than 100 years old.";
            }
            else if (dob < DateTime.Now.Date && (DateTime.Now.Date.Year - dob.Year) > 100)
            {
                error = error + "Client can not be less than 7 years and greater than 100 years old.";
            }
        }
        else
        {
            error = error + "Please enter date of birth.";
        }
        return error.Length > 0 ? false : true;
    }

不知怎么有一个出生日期为'07/19/2045' (MM/DD/YYYY)的记录。每次测试时,我都能看到验证是有效的。

我可以从浏览器禁用客户端验证。但是有什么办法可以禁用服务器端验证吗?

我需要知道一个错误的条目是如何发生的,以防止任何未来的问题。请让我知道是否有任何方式用户可以覆盖服务器验证或者我在我的方法中做错了什么。

在c#中,用户是否可以禁用服务器端验证?

用户无法修改服务器,错误很可能存在于您从StringDateTime的转换中。您可以尝试以下方法:

var date = DateTime.Now;
if(DateTime.TryParse(txtAge.Text, out date))
     if(date <= DateTime.Now.AddYears(-7) && date >= DateTime.Now.AddYears(-100))
         Console.WriteLine("Valid Date");

你需要添加你的else语句来实现这些错误,你可能不得不玩比较,但这应该是一个很好的起点。

根据我的说法,不可能禁用服务器端验证,因为我看不到任何可以阻止进入此代码的配置条目,我认为处理此问题的唯一方法是将dll复制到本地系统并尝试各种场景。对于错误的输入,您可以在另一台机器或示例控制台应用程序中执行相同的输入,以查看验证的哪一部分失败。