loading...
بهترین اس ام اس
بهنام علیپور بازدید : 82 یکشنبه 16 آبان 1389 نظرات (0)


آيا تابه‌حال به اين موضوع انديشيده‌ايد كه چطور مي‌توانيد در مقابل هرزنامه‌ها از فرم‌هاي وب خود محافظت كنيد؟

هيچ‌كس دوست ندارد، موقع ورود يا ثبت‌نام يا استفاده از فرم‌هاي وب، يك مشت حرف كج و معوج ببيند، و آنها را داخل فيلد مورد نظر وارد كند، اما آيا راه بهتري هم هست؟
بله، و بيشتر مردم از چنين راهي براي جلوگيري از حملات هرزنامه‌ها بي‌خبرند.
در بحث‌هايي كه براي جايگزيني ‌CAPTCHA‌ مي‌شود، نظريه‌اي است كه طبق آن، ‌مي‌توان با تشخيص رويدادهاي ماوس و يا فشرده شدن كليدها توسط جاوااسكريپت، از انسان بودن فرم‌پركننده مطلع شد.
در زير با كمك مثالي ساده، جانشيني براي ‌CAPTCHA ايجاد مي گردد. اما پيش از آن، بايستي نكات زير را در نظر بگيريد.
1 – فرم شما بايد برخي از رويدادهايي كه دليل فعاليت انساني‌اند، ثبت كند.

2 – اگر جاوا اسكريپت فعال نبود، بايد يك جايگزين سريع داشته باشيد.

3 – تمام اين آزمايش‌ها تا حد امكان بايد از چشم كاربر دور بماند.

4 – براي روبوت‌ها فهميدن و دور زدن آزمايش‌هاي شما، كار دشواري نيست.

آيا من انسانم؟

در ابتدا بايد راهي بيابيم كه فرم بتواند جواب سوال «آيا من انسانم؟» را به كد پشت صحنه بفرستد. بدين منظور، من از فيلد پنهان استفاده كردم. لازم به‌ذكر است، بر طبق نكات بالا، نام اين فيلد هر چيزي مي‌تواند باشد. اگر بات‌ها اسم اين فيلد را بدانند، در اين صورت مدار صحيحي از طريق سيستم به آن پاس خواهند داد. ‌ ‌
اين فيلد هرجايي مي‌تواند باشد، اما من قبل از بستن فروم مي‌گذارمش. ‌ ‌



‌function setUpHumanTest() {‌

‌var myforms = document.getElementsByTagName("form") ; ‌

‌; i
‌addEvent(myforms[i], "focus", markAsHuman, false); ‌

‌addEvent(myforms[i], "click", markAsHuman, false); ‌

‌} ‌

‌}‌

‌function markAsHuman() {‌

‌";1document.getElementById("imahuman").value = " ‌

‌}‌

‌var addEvent;‌

‌if (document.addEventListener) {‌

‌addEvent = function(element, type, handler) { ‌

‌element.addEventListener(type, handler, null); ‌

‌if (element.href) element.href="javascript:void(');" ; ‌

{‌‌

{‌

‌else if (document.attachEvent) {‌

‌addEvent = function(element, type, handler) { ‌

‌element.attachEvent("on" + type, handler); ‌

‌if (element.href) element.href="javascript:void(');" ; ‌

{‌‌

{‌

‌else {‌

‌ addEvent = new Function; ‌

‌}‌

حال از بالا به پايين آن را شرح مي‌دهيم.

– خط آخر به اين معني است كه كافي است يك دستور ‌addEvent‌ را اجرا كنيد و كار را تمام كنيد.

– تابع ‌markAsHuman‌ وقتي صدا زده مي‌شود كه ما گمان مي‌كنيم كاربر يك انسان است. اين تابع مقدار فيلد پنهان ما را از صفر به يك تغيير مي‌دهد.

– تابع ‌setUpHumanTest‌ در حقيقت تمام صفحه را بررسي مي‌كند و 2كنترل كننده جاوااسكريپت به فرم اضافه مي‌كند.

1– اگر فرم داراي ‌focus‌ بود (در حال انجام عمليات، در اين‌صورت تابع ‌markAsHuman‌ فراخوانده مي‌شود.)

2– اگر رويداد كليك اتفاق افتاد، باز تابع ‌markAsHuman‌ فراخوانده مي‌شود. ‌ ‌

اين رويدادها فقط در صفحه مرورگر اتفاق مي‌افتد، بنابراين هرزنويس‌ها يا كدها قادر به تغيير آن نخواهند بود.

3– با صدا زدن ‌addEvent‌، تابع ‌setUpHumanTest‌ فراخوانده مي‌شود. ‌ ‌

تست نتايج با اسكريپت ‌ ‌

فرم شما به يك اسكريپت ديگر ارسال مي‌شود (كه اين اسكريپت معمولا ‌PHP‌ يا ‌ASP‌ است)، كافي است به اين اسكريپت بگوييد كه هر كجا كه ‌imahuman‌ صفر بود، فرم را در نظر نگيرد. ‌ ‌

برخي از برنامه‌نويسان وانمود مي‌كنند كه اسكريپت كار مي‌كند و بات را به صفحه موفقيت آميز هم مي‌برند، اما كاري كه قرار است را انجام نمي‌دهند و هرزنويس را گول مي‌زنند. البته به عقيده من، اين كار باعث مي‌شود هرزنويس نسبت به توليد هرزنامه تشويق شود و بار اضافي روي سايت ايجاد كند.

منبع: www.parsviva.com

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 517
  • کل نظرات : 0
  • افراد آنلاین : 12
  • تعداد اعضا : 0
  • آی پی امروز : 48
  • آی پی دیروز : 41
  • بازدید امروز : 111
  • باردید دیروز : 105
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 777
  • بازدید ماه : 1,136
  • بازدید سال : 4,257
  • بازدید کلی : 43,380