簡體   English   中英

用戶可以通過任何方式禁用C#中的服務器端驗證

[英]Is there any way user can disable server side validation in c#

我有一個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)的記錄。 每次測試時,我都能看到驗證有效。

我可以從瀏覽器禁用克林特邊驗證。 但是,有什么方法可以禁用服務器端驗證?

我需要知道如何輸入錯誤,以防止將來出現任何問題。 請讓我知道用戶是否可以使用任何方法來覆蓋服務器驗證,或者我的方法做錯了什么。

用戶無法修改服務器,從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復制到本地系統並嘗試排除各種情況。 對於錯誤的輸入,您可以在另一台機器或示例控制台應用程序中進行相同的輸入,以查看驗證的哪一部分失敗。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM