سبد خرید 0

وبلاگ

بررسی Attribute های AllowHtml و ValidationInput

ASP.NET MVC به طور پیش فرض از پذیرش model هایی که دارای تگ های html هستند اجتناب میکند و دلیل این کار هم جلوگیری از حملات هکر ها از طریق XSS می باشد .  اگر View یی که حاوی کدهای Html می باشد را به سمت Controller ارسال کنیم با پیغام خطای زیر رو به رو خواهیم شد :

 

با این وضعیت چاره چیست ؟ در مواقعی لازم است که از یک ادیتور متن استفاده کنیم ،با این شرایط چاره ای جز استفاده از یک Textarea معمولی وجود نخواهد داشت .

برای رفع این مشکل می توانیم از دو Attribute زیر کمک بگیرم تا بتوان کدهای Html را هم از کاربر دریافت کرد :

1- AllowHtml

2- ValidationInput

 

ValidationInput Attribute :

یکی از راه های ساده برای پذیرش رشته های حاول تگ های HTML استفاده از ValidationInput می باشد . این Attribute را هم می توان به Action Method ها اعمال کرد که در این حالت فقط بر روی Action Method مورد نظر اعمال می شود و یا اینکه می توان آن را سراسری بر روی تمامی Action های یک Controller اعمال کرد که در این حالت باید این Attribute را بر روی Controller مورد نظر اعمال کرد .

قطعه کد زیر نمونه ای از نحوه استفاده از این Attribute می باشد :

 و اگر بخواهیم فقط بر روی یک Action Method اعمال شود همانند زیر خواهد بود :

AllowHtml Attribute :

فرض کنید Model ما به صورت زیر است :

مشکلی که ValidationInput  دارد این است که اجازه می دهد تمامی Property های Model مورد نظر حاوی تگ های HTML باشند که این این  تا حدودی ناامن می باشد.  برای محدود کردن Property های یک Model به پذیرش تگ های Html می توان از AllowHtml استفاده نمود . در Model فوق می خواهیم تنها خاصیت Body آن اجازه نگه داشتن تگ های HTML  را داشته باشد ، برای این کار از AllowHtml به صورت زیر استفاده می کنیم :

 در این حالت فقط خاصیت Body مجاز به مقدار دارای HTML می باشد و اگر کاربر در خاصیت Title تگ های HTML را وارد کند با خطای فوق که در ابتدا مقاله ذکر آن کذشت برخورد خواهد کرد .

برای آشنایی بیشتر با XSS  و مقابله با آن مقاله زیر پیشنهاد می شود :

مقابله با XSS ، یکبار برای همیشه

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

دیدگاهتان را بنویسید

keyboard_arrow_up