توضیحات و دانلود

تفاوت بین ValidateInput (false) و AllowHtml در ASP.Net MVC
0 0
تفاوت بین ValidateInput (false) و AllowHtml در ASP.Net MVC

با سلام در این مقاله، با مثال  تفاوت بین ValidateInput (false) و AllowHtml در ASP.Net MVC را توضیح خواهیم داد .
هر دو ValidateInput (false) و AllowHtml attributes برای ارسال محتویات HTML یا کد به سرور استفاده می شوند که توسط ASP.Net MVC به طور پیش فرض غیر فعال شده است تا از حملات XSS (Cross Site Scripting) جلوگیری کند.
حملات XSS (Cross Site Scripting)
در حملات XSS (Cross Site Scripting)، یک هکر تلاش می کند تا کد HTML یا جاوا اسکریپت را به یک وب سایت از طریق زمینه های INPUT مانند TextBoxes، TextAreas، و غیره تزریق کند. از این رو ASP.Net MVC هنگامی که چنین محتوای نامعتبر شناسایی می شود، Exception بعدی را می گیرد.

تفاوت بین ValidateInput (false) و AllowHtml در ASP.Net MVC
در زیر تفاوت های ValidateInput (false) و AllowHtml در ASP.Net MVC وجود دارد :
1. ویژگی AllowHtml [ توصیه شده ]
ویژگی AllowHtml را می توان به یک Property Model اعمال کرد و اعتبارسنجی آن توسط ASP.Net MVC تنها برای آن ویژگی خاص غیرفعال می شود .
مزایا
ویژگی AllowHtml برای کلاس Model توسعه داده شده است.
دامنه محدود به ویژگی خاص کلاس Model است.
این راه حل ایمن و توصیه شده است.
مثال :
Model

public class PersonModel
{
    [Display(Name = "Resume:")]
    [AllowHtml]
    public string Resume { get; set; }
}
Controller
public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(PersonModel person)
    {
        return View();
    }
}

View

@model Potential_Dangerous_MVC.Models.PersonModel
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <table>
            <tr>
                <td>@Html.LabelFor(m => m.Resume)</td>
                <td>@Html.TextAreaFor(m => m.Resume)</td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="Submit"/></td>
                <td></td>
            </tr>
        </table>
    }
</body>
</html>

2. ویژگی ValidateInput در سطح اقدام [ SECOND BEST RECOMMENDED ]
ویژگی ValidateInput را می توان به یک روش Action Controller اعمال کرد و اعتبار آن توسط ASP.Net MVC تنها برای آن روش Action خاص غیرفعال می شود .
مزایا
دامنه محدود به روش خاصی از کلاس Controller می باشد.
اگر خواص چندگانه محتوای HTML را قبول کرده باشید، این روش باعث کاهش کارآیی می شود.
هنگامی که کلاس Model برای طراحی عناصر فرم استفاده نمی شود، این ویژگی مورد نیاز است.
معایب
تمام فیلدهای فرم ارسال اطلاعات در یک روش می تواند محتوای HTML را ارسال کند، هرچند تنها یک یا چند مورد ممکن است برای ارسال نیاز باشد.
مثال :
Model

public class PersonModel
{
    [Display(Name = "Resume:")]
    public string Resume { get; set; }
}

Controller

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Index(PersonModel person)
    {
        return View();
    }
}

View

@model Potential_Dangerous_MVC.Models.PersonModel
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <table>
            <tr>
                <td>@Html.LabelFor(m => m.Resume)</td>
                <td>@Html.TextAreaFor(m => m.Resume)</td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="Submit"/></td>
                <td></td>
            </tr>
        </table>
    }
</body>
</html>

3. ویژگی ValidateInput در سطح THIRD BEST RECOMMENDED -  Controller
ویژگی ValidateInput می تواند به یک Controller اعمال شود و اعتبار سنجی توسط ASP.Net MVC برای تمام روش های  آن Controller خاص غیر فعال خواهد شد.
مزایا
دامنه محدود به کلاس Controller خاص است.
اگر چندین روش  محتوای HTML را قبول کرده باشید، این روش باعث کاهش کارآیی می شود.
هنگامی که کلاس Model برای طراحی فرم های چندگانه استفاده نمی شود، این روش مفید است.
معایب
تمام فیلدهای فرم ارسال اطلاعات را می تواند به تمام روش های محتوای HTML را ارسال کند، هرچند تنها یک یا چند مورد ممکن است برای ارسال نیاز باشد.
مثال :
Model

public class PersonModel
{
    [Display(Name = "Resume:")]
    public string Resume { get; set; }
}

Controller

[ValidateInput(false)]
public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(PersonModel person)
    {
        return View();
    }
}

View

@model Potential_Dangerous_MVC.Models.PersonModel
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <table>
            <tr>
                <td>@Html.LabelFor(m => m.Resume)</td>
                <td>@Html.TextAreaFor(m => m.Resume)</td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="Submit"/></td>
                <td></td>
            </tr>
        </table>
    }
</body>
</html>

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

لینک های دانلود

ارسال نظر
ارسال پیام به :