[英]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.