در برنامه ی تحت وب که نیاز به وارد شدن اطلاعات توسط کاربران هست برای اینکه اطلاعات توسط ماشین و روبات وارد نشه از
CAPTCHA استفاده می کنیم. به عنوان مثال یک تصویر شامل یک کد میذاریم و از کاربر می خوایم که کد موجود در تصویر رو به صورت نوشته وارد کنه تا فیلتری باشه برای جلوگیری از ارسال اطلاعات توسط ماشین.
حالا دو بحث در این مورد وجود داره یکی اینکه چه فیلتر و با چه کیفتی قرار داده بشه در حال حاضر به صورت رایج از تصویر و گاهی از صدا و نوشته استفاده میشه که کاربر بعد از دیدن عکس یا شنیدن صدا توسط پر کردن ورودی به صورت نوشته در فرم و ارسال اون از فیلتر رد میشه که در این پست قصد بررسی اون رو ندارم و اما بحث دوم اینه که این فیلتر به چه صورت پیاده سازی شه.
فرض می کنیم از تصویر استفاده شده که این تصویر نشان دهنده عددی است و کاربر باید عدد رو به صورت نوشته برای احراز هویت انسانی(هوشمندی!) وارد کنه؛ حال چطور باید این فیلتر را پیاده کرد که قابل دور زدن نباشه؛
سه نکته اصلی وجود داره:
۱- عدد باید در سمت سرور تعیین شه و هنگام درخواست تصویر یا در هنگام تعیین عدد عکس تولید شه (این تولید عکس بستگی به شرایط داره و البته برنامه نویس)
۲- نحوه تولید تصویر عدد نباید به نحوی باشه که عدد در خروجی که برای کلاینت ارسال می شه باشه
مثلاً در صورتی که برای نمایش تصویر با عدد مورد نظر داشته باشیم:
<img src="captcha.php?code=1234" />
در این حالت استفاده از تصویر زیر سوال میره!
۳- در هر بار درخواست و ارسال فرم عدد باید دوباره تعیین شه؛ در بعضی موارد این به روز رسانی عدد به عهده تولید کننده عدد گذاشته میشه که در این حالت در صورتی که محدودیتی برای ارسال درخواست برای کاربر وجود نداشته باشه وقتی تقاضایی برای مشاهده تصویر به سمت سرور ارسال نشه عدد به روز نمیشه و در صورتی که به نحوی ماشین به عدد موجود به تصویر برای یک بار برسه به هر تعدادی می تونه درخواست ارسال کنه
قطعاً باید موارد دیگه در برنامه از جمله محدودیت ارسال یا محدودیت تلاش های ناموفق و ... در نظر گرفته شه تا کارآیی به حد ایده آل قابل دسترس برسه.