امکانی جدید برای Encode نمودن رشته ها در ASP.NET 4.0
  در این ترفند به معرفی یکی از ویژگی های جدید معرفی شده در ASP.NET 4.0 می پردازیم.
   ASP.NET
   ۱۸۸۷۰
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۸۹/۱۱/۱۹
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

همانطور که حتما مستحضر می باشید، داده هایی که توسط کاربران وب سایت وارد می شوند، در صورتی که نیاز باشد در صفحات وب نمایش داده شوند، حتما باید Encode شوند تا وب سایت در مقابل حملاتی از نوع XSS مقاوم تر شود.

تا قبل از ارائه نسخه ASP.NET 4.0، برنامه نویسان معمولا از روش های HttpUtility.HtmlEncode یا Server.HtmlEncode برای Encode نمودن داده های کاربر استفاده می کردند.

به طور مثال فرض کنید تابع GetAddress آدرس محل سکونت کاربر را بر می گرداند و ما قصد داریم این آدرس را در صفحه نمایش دهید.

public string GetAddress()
{
    return "This should be my address but not!<script>... I am bad user</script>";
}

نحوه نمایش:

<%= Server.HtmlEncode(GetAddress()) %>

با استفاده از این روش می تواند اطمینان حاصل کرد که اگر کاربر به جای آدرس واقعی خود، اسکریپت های خطرناک وارد نموده باشد، آسیبی وب سایت را تهدید نمی نماید زیرا پس از اجرای تابع HtmlEncode دیگر رشته مورد نظر قابلیت اجرا در صفحه نخواهد داشت و صرفا قابل نمایش خواهد بود.

اما در ASP.NET 4.0 امکان جدیدی معرفی شده است که انجام این عمل را ساده تر می نماید. با استفاده از کاراکتر ":" به جای کاراکتر "=" خروجی تابع به شکل خودکار Encode می شود و دیگر نیازی به فراخوانی متد HtmlEncode نخواهد بود.

عملکرد قطعه کد زیر دقیقا همانند قطعه کد قبلی می باشد.

<%: GetAddress() %>