簡體   English   中英

在mvc asp.net中登錄時過濾特殊字符

[英]Filtering special characters in login in mvc asp.net

嘿伙計們我試圖讓我的登錄安全反對sql注入。 我想在php中使用類似preg_replace的東西來過濾特殊字符。 關於如何將其應用於asp.net中的輸入的任何建議?

這是我在我的控制器中的登錄信息:

public ActionResult Login(Models.User user)
        {
            if (ModelState.IsValid)
            {

                if (isValid(user.UserName, user.Password))
                {
                    FormsAuthentication.SetAuthCookie(db.User.Where(u => u.UserName == user.UserName).FirstOrDefault().UserRole.Name, false);
                    return RedirectToAction("Clock", "User");
                }
                else
                {
                    ModelState.AddModelError("", "User Name or Password is incorrect");
                }
            }

            return View(user);
        }

這是我的isValid:

private bool isValid(string UserName, string Password)
        {
            bool isValid = false;

            var user = db.User.Where(u => u.UserName == UserName).FirstOrDefault();
            if (user != null)
            {
                if(Crypto.VerifyHashedPassword(user.Password, Password))
                {  
                    isValid = true;
                }
            }

            return isValid;
        }

這是我的login.cshtml:

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true, "Login Failed.  Check your login details.");
    <div>
        <fieldset>
            <legend>Login Form</legend>
            <div>@Html.LabelFor(u=>u.UserName)</div>
            <div>@Html.TextBoxFor(u => u.UserName)
                @Html.ValidationMessageFor(u => u.UserName)
            </div>

            <div>@Html.LabelFor(u => u.Password)</div>
            <div>
                @Html.PasswordFor(u => u.Password)
            @Html.ValidationMessageFor(u => u.Password)
        </div>
            <input type="Submit" value="Log In" />
        </fieldset>
    </div>
}

看起來您正在使用某種ORM進行數據訪問。 這本身就應該處理任何Sql Injection問題,最有可能是使用屬性,因此您不必擔心它。 只需確保當您呈現任何用戶輸入的內容時,您將對其進行html / url編碼。 默認情況下,大多數元素都會為您完成。

通常,ASP.NET使用Entity Framework作為其ORM。 如果是這種情況,他們已經為您處理了SQL注入,請看這個鏈接:

http://msdn.microsoft.com/en-us/library/cc716760.aspx

引用:

LINQ to Entities注入攻擊:

盡管在LINQ to Entities中可以進行查詢組合,但它是通過對象模型API執行的。 與實體SQL查詢不同,LINQ to Entities查詢不是使用字符串操作或連接組成的,並且它們不易受傳統SQL注入攻擊的影響。

暫無
暫無

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

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