נכון שה CAPTCHA באתר הוא סתם לעצבן את המגיבים ? לקרוא ולא להאמין
אחד מהתחביבים שלי, זה לבדוק security של אתרים, אתם יודעים אפילו דברים פשוטים כמו xss, Sql Injection ועוד.
לפני כמה ימים רציתי להוריד את קובץ ה css של האתר, כדי לראות איזה classes אני צריך לדרוס אם אני רוצה לשנות את המראה של הבלוג שלי כמו
שגיא כתב
כאן.
אז כשהסתכלתי על ה source של האתר ראיתי שם של פונקצייה ב java script שמיד הדליק לי את כל נורות האזהרה, אז חבשתי את כובע ההקאר שלי והתחלתי להסתכל על הקוד,
לפני שנתחיל, שווה שנייה להבין למה צריך CAPTCHA, לכאורה הסבה העיקרית היא שלא לאפשר למתכנתים לכתוב קוד שימלא את האתר בספאם, או לדוגמא באתר של בזק, אחרי שמבקשים חמשה שמות צריך להקליד את ה CAPTCHA, שם זה כדי למנוע ממתכנתים לכתוב תוכנה שתסרוק את האתר שלהם ותעשה חיפוש הפוך (לפי מספרי טלפון, נניח),
אז בואו נראה את הפונקציה שהקפיצה אותי.
אז הנה הפונקצייה לפניכם:
function ValidateCaptcha(val, args)
{
var value = args.Value;
var nameEQ = "CAPTCHA=";
var captchaNumbers;
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++)
{
var c = ca[i];
while (c.charAt(0) == ' ')
{
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0)
{
captchaNumbers = c.substring(nameEQ.length, c.length);
}
}
args.IsValid = captchaNumbers == value;
}
אז מה אנחנו רואים, שלמעשה הבדיקה מתבצעת בצד הקליינט, ואיך יודעים מה המספרים שבתמונה, זה נשמר ב cookie,
שלמעשה זה התמונה, ובזמן הטעינה שלו הוא שומר ב cookie את המספר.
אם אני הייתי באמת הקאר, הייתי ממש נעלב, כאילו מה עבר למתכנת בראש כשהוא כתב את הקוד הזה,
למעשה גיא אמר לי שכבר פורסם פוסטים בנושא, אז חפשתי ובאמת מצאתי כמה פוסטים שמדברים בערך על הנושא, גם
Dotmad ציין
כאן שלפעמים אי אפשר להגיב
ואוהד ענה שצריך לעשות reload לתמונה, עכשיו זה ברור למה זה עובד, מכיון שה cookie נטעון שוב.
אז אם כבר דיברו על הנושא, למה אני בכל זאת מדבר על זה שוב, כי כשקצת חקרתי יותר לעומק, גיליתי דבר מדהים.
רק המשתמש המסכן בדפדפן צריך להקיש את המספרים, אם אתה ספאמר שמנסה לגשת מקוד, אתה לא צריך אפילו להתאמץ לקרוא את ה cookie, ומדוע, כי למעשה זה validator, שמקושר על הלחצן, שלפני שנגשים לשרת, לבדוק האם המספרים מתאימים, אבל אם אני נגש דרך
HttpWebRequest או אפילו דרך
WebClient, אני לא עובר את הבדיקה, כי לא לחצתי על שום לחצן,
ולכן אני אומר שה CAPTCHA זה נטו כדי לעצבן את המגיבים, ואין לזה שום תועלת לגבי ספאם.
ואם זה לא היה עצוב זה היה מצחיק.
נ.ב. לפני שפרסמתי את הפוסט שאלתי את
מיכל האם זה בסדר לפרסם פוסט בנושא הזה, (אולי ספמארים יקפצו על המציאה)
אז היא ענתה לי, שזה נתון להחלטתי, אבל מומלץ שאם אני מפרסם שאני קודם יפנה את השאלה ל COMMUNITY SERVER לראות האם הם מודעים לזה או לא,
אז שלחתי אליהם את השאלה, והנה התשובה שלהם, לעיונכם:
Hi Shlomo,
Yes, that site is definitely using our software, however out of the box Community Server does not use that captcha system, and it was not added by Telligent. We also do not manage that site, so I'm afraid I can't assist you a whole lot with this issue :-(
Thanks,
Ryan Howard
בכל מקרה החלטתי לא להדגים איך כותבים את הקוד של הוספת תגובות מקוד.