منوی اصلی

منوي اصلي

 

جستجو

 

مدیریت کاربران

 

نظر سنجي

 

خبر نامه

 

مطالب برتر

 

پيگيري اخبار سايت

 

انتخاب زبان

 

صفحات يافت شده

 
ضرورت پیشگیری از حمله به وب سایت به کمک CAPTCHA
راه های بسیاری برای حمله کردن به یک وب سایت وجود دارد. از جمله SQL Injection، تزریق اسکریپت، ربودن session و... . در این زمینه ها شما مقالات بسیاری خواهید یافت که به تفصیل توضیحات زیادی داده‌اند.
اما در این مقاله قصد داریم تا شما را با CAPTCHA یا همان Completely Automated Public Turing test to tell Computers and Humans Apart آشنا سازیم.
همانگونه که میدانید چنانچه شما در وب سایت خود صفحه ای مخصوص ثبت نام کاربران ایجاد کرده باشید، در صورتی که مکانیزمی برای شناسایی این که آیا استفاده کننده از برنامه یک انسان واقعی است یا یک نرم افزار فراهم نکرده باشید، این احتمال میرود که برخی نفوذگر ها با استفاده از نرم افزارهای موجود اقدام به ایجاد هزاران کاربر بنمایند! در این مقاله شرح خواهیم داد که چگونه ممکن است توسط یک برنامه، هزاران کاربر در یک وب سایت ایجاد نمود و بازدهی برنامه و پایگاه داده را کاهش داد.
برای ساخت چنین نرم افزاری، نیاز داریم تا یک برنامه تحت ویندوز ایجاد کرده و آن را اجرا کنیم. ما از یک کنترل COM به نام AxSHDocVw.AxWebBrowser همراه با MSHTML استفاده میکنیم که برای ما امکان استفاده از یک مرورگر IE همراه با مدل DOM در HTML را فراهم میکند.
در این مثال از اشیاء ACTIVEX زیر استفاده میکنیم
 mshtml.tlb
 SHDocVw.dll
شما میتوانید این اشیاء را در پوشه windows/system32 کامپیوتر خود پیدا کنید
بریا طراحی و پیاده سازی برنامه مراحل زیر را طی خواهیم کرد:
• مرحله 1 – ربودن صفحه ثبت نام با استفاده از کنترل WebBrowser
• شناسایی فیلدهای مختلف فرم را در صفحه ثبت نام با استفاده از کنترل MSHTML میتوانیم
• ایجاد مقادیر تصادفی برای فیلدها
• ارسال مقادیر تولید شده به وب سایت برای ثبت نام
پس از انجام این مراحل میتوانیم دو مرحله آخر را به تعداد دلخواه انجام دهیم!
تصور کنید که این وب سایت دارای یک فرم ثبت نام با فیلدهای زیر و یک دکمه ارسال باشد

لطفا به ادامه مطلب مراجعه کنید




ادامه مطلب |   نوشته شده توسط مدیر سایت در 1388/07/23 و : 21:11


خصوصیت AutoEventWireup در وب فرمهای ASP.NET
ASP.NET از دو متد برای ایجاد کردن صفحات استفاده می‌کند:
1- کد درون خط In-line code
2- کد پشت صفحه code behind
کد دورن خط کدی است که مستقیما داخل صفحه ASPX قرار داده شده است. در حالی که کد پشت صفحه به آن دسته از کدهایی گفته میشود که درون یک کلاس فایل دیگر قرار دارند. این کار باعث میشود تا کدهای HTML از منطق برنامه به زیبایی تفکیک شوند.
زمانی که ما از ویژوال استودیو دات نت برای ایجاد وب فرمهای ASP.NET استفاده میکنیم، به طور پیش فرض از متد کد پشت صفحه استفاده میشود. علاوه بر این،ویژوال استودیو دات نت به طور خودکار زمانی که پروژه خود را میسازیم یا اصطلاحا build میکنیم، آن را پیش کامپایل میکند.
راهنماها ( directives ) در ASP.NET تنظمیات و ویژگیهای صفحه را کنترل میکنند. این راهنماها میتوانند در هر کجای صفحه قرار گیرند اما معمولا مرسوم است که در اولین خطوط صفحه قرار داده میشوند. ضمن اینکه هم در فایلهای ASPX و هم در فایلهای ASCX قرار میگیرند.
ASP.NET از 8 راهنمای مختلف استفاده میکند که به شرح زیر هستند:
• @ Page
• @ Control
• @ Import
• @ Implements
• @ Register
• @ Assembly
• @ OutputCache
• @ Reference

راهنمای Page به دفعات مورد استفاده قرار میگیرد و برای ویرایش بخش عظیمی از تنظیمات به کار میرود که چگونگی کارکرد پارسر و کامپایلر صفحه را کنترل میکنند. آنچه در زیر میبینید لیستی است از خصوصیاتی که معمولا در این راهنما استفاده میشوند:

لطفا به ادامه مطلب مراجعه کنید




ادامه مطلب |   نوشته شده توسط مدیر سایت در 1388/07/23 و : 21:8


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

برای فعال کردن صفحه بندی میبایست دو ویژگی AllowPaging و AllowCustomPaging برابر true باشند. زمانی که AllowCustomPaging به طور پیش فرض برابر false باشد، دیتاگرید اینگونه در نظر میگیرد که همه داده هایی که قرار است نمایش یابند، در منبع داده ( Data source ) موجود میباشند. ضمن اینکه گروهی از رکوردها را برای نمایش از مکان CurrentPageIndex تا PageSize محاسبه میکند.
زمانی که AllowCustomPaging برابر true باشد، دیتاگرید انتظار تنها یک صفحه از آن داده هایی را دارد که قرار است نمایش دهد و در این حالت برنامه نویس است که مسوول پرکردن منبع داده با داده های مناسب است. به کد دیتاگرید دقت کنید:

<asp:DataGrid ID="dgBooks" runat="server"
BorderColor="#000080"
BorderWidth="2px"
AutoGenerateColumns="False"
Width="90%"
HorizontalAlign="Center"
AllowPaging="True"
AllowCustomPaging="True"
PageSize="10"
PagerStyle-Visible="False">

دقت کنید که در این مثال ما از صفحه بندی خود دیتاگرید استفاده ننموده ایم و خودمان به صورت دستی 4 دکمه بر روی فرم قرار داده ایم که برای پیمایش صفحات استفاده میشوند.

protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
currentPage = Convert.ToInt32(labCurrentPage.Text) - 1;
totalPages = Convert.ToInt32(labTotalPages.Text);
}
else
{
// This is the first rendering of the form so set the current page to
// the first page and bind the data
currentPage = 0;
bindData();
}
}

لطفا به ادامه مطلب مراجعه کنید





ادامه مطلب |   نوشته شده توسط مدیر سایت در 1388/07/23 و : 21:6


مقید سازی داده ها در ASP.NET با استفاده از # بدون نیاز به reflection

در این مقاله یکی از ویژگیهای جذاب و کاربردی چهارچوب دات نت یا.net framework را که مکانیزم شرح نوع یا Type Description است بررسی میکنیم. این مکانیزم در فضای نام System.ComponentModel قرار دارد و عموما توسط کلاسهای TypeDescriptor, CustomTypeDescriptor ، اینترفیس ICustomTypeDescriptor و برخی کلاسهای دیگر بیان میشود. این کلاسها عموما توسط برخی کنترلها مانند DataGrids و DataBinder مورد استفاده قرار میگیرند.
به طور خلاصه میتوانیم اینگونه بگوییم که این کلاسها به ما امکان میدهد تا یک نوع داده ای یا یک منبع داده ای تعریف کنیم که زمانی که به یک کنترل دات نت مقید سازی میشود – به عنوان مثال توسط عبارتی نظیر<%# %> - منجر به فراخوانی های انعکاسی ( reflection ) نشود. این کار بوسیله مشخص کردن اطلاعات ویژگیها به صورت پویا در زمان اجرا انجام میگردد.
بگذارید یک مثال عملی بزنیم. در پروژه که پیش رو داریم، کدی داریم که خروجی اش از نوع object[][] میباشد و حاوی مقادیری متادیتا مانند ستونها، طول، در دسترس بودن صفحات بعدی و .. است. برای نمایش این اطلاعات در یک صفحه ASPX یک روش بسیار بد این است که از دستوری مشابه <%# ((object[])DataItem)[3][4]%> استفاده نماییم !
کاری که من میخواهم انجام دهم این است که کلاسی داشته باشیم که حاوی اطلاعات جدول مانند به همراه برخی متادیتا باشد. همچنین نیاز داریم تا این کلاس قابلیت مقید سازی را مشابه آنچه که در DataTable داریم داشته باشد. یعنی مثلا بتوانیم از آن اینگونه استفاده کنیم:

لطفا به ادامه مطلب مراجعه کنید




ادامه مطلب |   نوشته شده توسط مدیر سایت در 1388/07/23 و : 21:2


افزودن پیمایش مستقیم صفحه به دیتاگرید

تصور کنید که میخواهید با استفاده از دیتاگرید اطلاعاتی را به صورت صفحه بندی شده نمایش دهید و به کاربر این امکان را نیز بدهید که بتواند مستقیما به آن صفحه ای که میخواهد برود.
برای نمایش داده ها به صورت صفحه بندی شده شما میتوانید از یک کنترل دیتاگرید با چنین ویژگی‌هایی استفاده کنید:

PagerStyle-Mode="NumericPages"
PagerStyle-PageButtonCount="5"

و خروجی چنین خواهد بود:
اما تصور کنید که بخواهیم خروجی ما چیزی شبیه به این باشد:
یعنی کاربر عدد صفحه مورد نظر را به صورت دستی وارد کند و مستقیما به صفه مورد نظر خود برود. این کار برای زمانی که تعداد صفحات دیتاگرید مورد نظر زیاد شود کاربرد خواهد داشت.
چنانچه بخواهیم این مرورد را پیاده سازی کنیم ابتدا از ویژگی هایی زیر استفاده میکنیم:

AllowPaging="True"
PageSize="5"
PagerStyle-Visible="False"

همانطور که میبینید در اینجا دیگر اجازه نداده‌ایم تا اعداد صفحات در زیر دیتاگرید نمایش پیدا کنند.

لطفا به ادامه مطلب مراجعه کنید




ادامه مطلب |   نوشته شده توسط مدیر سایت در 1388/07/23 و : 21:0


امار سايت

 

لینک دوستان

 

لوگو ی دوستان

 

وضعيت در Yahoo

 

جستجوی دامین

 

لينك هاي ما

 
Maftoox . ltd Free Software ® . Copyright © 2007-2010 Maftoox.Ltd
Powerd By : M.Maftooh    Cms By : Onix Press Cms 3.4