تالار گفتمان nCIS.ir

نسخه‌ی کامل: کپچا
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2 3 4 5 6
(14-07-1394، 11:42 ق.ظ)n0o0b_sina نوشته: [ -> ]تو این حالت فقط یه مشکل داریم اونم غیر فعال بودن js هست، که میتونیم کلا سایت رو نشون ندیم.

قرار نیست بخاطر یه ولیدیشن سمت کلاینت که یه آپشن برای راحتی خود کاربر هست نه یه Feature اساسی سایت، کل سایت رو غیرفعال کنیم. احساس میکنم دوستان به اشتباه دارن فکر میکنن با دورزدن ولیدیشن سمت کلاینت، رمز سمت سرور رو تونستن حدس بزنن.
من یه چیز دیگ گفتم کلا
بازم ممنون، حل شد
(14-07-1394، 01:15 ب.ظ)ADMIN نوشته: [ -> ]چرا دوست عزیز متوجه نمیشین که میگم این ولیدیشن سمت کلاینت هیچ اعتباری نداره؟ به فرض که چند حالت تصادفی رو هم پیدا کردین. احتمال اینکه این رمز شما که یکی از حالتهای ممکنه[b/] که فقط از بین این حالتها، [b]1 عدد رمز درست وجود داره، در حالت پیشفرض کپچا که 6 حرف الفبا هست، میشه 1/308915776 و این عدد خیلی بیشتر از چیزیه که تصور میکنید. حالا تازه کلاً توی حالت پیشفرض 3 بار فرصت دارین این رو تست کنید و بعد کپچا عوض میشه. شما اگه حالتهای ممکن دیگه اون جمع ارقام (هش) رو هم در آورده باشین، با ارسال اونها سمت سرور جواب میگیرین «کد امنیتی اشتباه است» چون اون حالت شما، یکی از حالتهای Fake بوده نه کد اصلی و فقط تونستین ولیدیشن سمت کلاینت رو فریب بدین.

باز هم تأکید میکنم پیداکردن کدهایی که هش موردنظر رو تولید میکنن، به معنای پیدا کردن کد امنیتی سمت سرور نیست!
مهندس ببین خب اشتباه فهمیدی من چی میگم دیگه!
این 308915776 حالت که شما میگی کل حالتهای ممکن کد کپچا هست. ولی وقتی شما یک هش خاص، یعنی در این مورد جمع کد اسکی کاراکترهای کد مورد نظر رو هم داری، اونوقت از بین این 308915776 تعداد خیلی کمتری حالت وجود دارن که جمع ارقامشون اون عدد میشه! بنابراین ما در سمت کلاینت از بین 308915776 حالت انتخاب نمیکنیم، بلکه نگاه میکنیم از بین این 308915776 حالت کدوماش چنان هشی رو تولید میکنه، فرض مثلا میشه 200 مورد، و یکی از این 200 مورد رو بصورت تصادفی ارسال میکنیم. این میشه یک شانس 1 در 200 برای موفقیت، که از شانس 1 در 308915776 خیلی بهتره.

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

یه مسئلهء روشن و ساده ایه. نمیدنم شما کجاش گیر دارید متوجه نمیشید.
(13-07-1394، 02:48 ب.ظ)n0o0b_sina نوشته: [ -> ]میگم اگه ما با canvas کپتچا درست کنیم و توی مموری جاوااسکریپت ذخیره کنیم، اسپمر از کجا میتونه اونو بخونه؟!

کلا ایده canvas واسه کپچا صحیح نیست!
1- غیرفعال بودن js که خودت گفتی
2- به دلایل امنیتی بعضی افزونه های مرورگر نمایش canvas رو غیرفعال میکنن. مثلا روی Tor به طور پیشفرض غیرفعاله.

اینجا رو مطالعه کنین:
http://tor.stackexchange.com/questions/3...urity-flaw

در ضمن فکر نمیکنم کپچای درست و حسابی ای با canvas پیدا بشه!
چون محتوای canvas با کد js تولید میشه و در عمل الگوریتم ساخت کپچا لو میره و این خودش خیلی بده.

درکل مثل این میمونه که غذا رو دور سرمون بچرخونیم.
تازه کاری نداره خواستید خودم POC براش مینویسم. یعنی برنامه مینویسم تصویر کپچا رو لود کنه، و بعدش بهت مثلا 200 تا کد ممکن رو خروجی میده که کد صحیح قطعا بین اونا وجود داره دنبالش سرچ کنی مشخص میشه!
البته عدد دقیقش رو نمیدونم شاید 200 تا شاید 1000 تا شاید بیشتر شاید کمتر، بهرحال چیزی که مشخصه اینه که از کل حالتهای ممکن کد کپچا (308915776) خیلی کمتره.
درسته خیلی کمتره ولی بازم احتمال 1 در فرضاً 1000 که اونم بطور پیشفرض توی هر 3 بار درخواست عوض میشه، مشکلی رو رفع نمیکنه. ازطرفی کد کپچا اساساً برای تشخیص انسان از روبات وجود داره و فرض بگیریم روبات با احتمال جمعی 3 در 1000 بتونه کپچا رو رد کنه. این موضوع که باز هم معتقدم عددش خیلی بیشتر از 1000 خواهد بود، اهمیتش در حدی نیست که بخوایم بخاطرش راحتی کاربر رو از بین ببریم و کلی ترافیک به سرور تحمیل کنیم تا اطلاعات سمت سرور ارسال بشه و بعد دوباره برگرده سمت کلاینت و بگه کپچا مشکل داشته و دوباره وارد کنه. درنهایت اگه خیلی روی این مسئله حساس هستین میتونید با یه خط کد غیرفعالش کنید:
'enableClientValidation' => false,
دوستان هر حرف دوتاتون درسته!
در بدترین حالت ما 308915776 حالت داریم. ولی به خاطر این کدی که سمت کاربر فرستاده میشه مجموع حالاتی که باید بررسی بشن در بهترین حالت 6^2 = 64 تا میشه.
تا اینجا حرف اشپیلن درسته! میگه این چیزی که اضافه کردن امنیت رو پایین آورده و درست میگه.
ولی از اونطرف آقای شهرکی میگن حداکثر testLimit 3 تا هست و راست میگن.
یعنی هکر باید این 64 تا رو بفرسته سمت سرور تا ولیدیت بشه ولی اگر 3 بار اشتباه بفرسته بار چهارم یه کد جدید تولید میشه.

با این حساب احتمال درست در اومدن کپچا حدود 4.68 درصد هست.
(14-07-1394، 01:46 ب.ظ)محسن نوری نوشته: [ -> ]کلا ایده canvas واسه کپچا صحیح نیست!
1- غیرفعال بودن js که خودت گفتی
2- به دلایل امنیتی بعضی افزونه های مرورگر نمایش canvas رو غیرفعال میکنن. مثلا روی Tor به طور پیشفرض غیرفعاله.

اینجا رو مطالعه کنین:
http://tor.stackexchange.com/questions/3...urity-flaw

در ضمن فکر نمیکنم کپچای درست و حسابی ای با canvas پیدا بشه!
چون محتوای canvas با کد js تولید میشه و در عمل الگوریتم ساخت کپچا لو میره و این خودش خیلی بده.

درکل مثل این میمونه که غذا رو دور سرمون بچرخونیم.

الگوریتم؟! مثلا توی فریمورک های اوپن سورس، الگوریتم لو نمیره؟!
فرقی نمیکنه الگوریتم چی باشه به هر حال تعداد حالت های ممکن برای کپتچا ثابت هست.
تنها مشکل غیر فعال بودن js هست، که میشه سایتو کلا نشون نداد! به نظره من کاربری که جاوااسکریپتش غیر فعاله اصلا کاربر به حساب نمیاد
این نظر شما باعث میشه بخش زیادی از کاربران رو از دست بدین. مسأله فقط غیرفعال JS نیست. ممکنه از اون نسخه خاص پشتیبانی نکنه. ممکنه مرورگرش HTML5 رو نشناسه. ممکنه IE درب و داغون مایکروسافت باشه. اگه دنبال بازدیدکننده هستین، واسه کاربر ناز نکنید!
جناب شهرکی الان قالب انجمنه شما html5 هست، یعنی نصفه بازدید کننده هاتون داره میپره :)
---
بعد یه کار دیگ هم میشه کرد ما با درخواست ایجکس تصویر کپتچا رو لود کنیم و اونو توی متغیر جاوا اسکریپت قرار بدیم، به جای اینکه توی body بزاریمش
بعد یه مورده دیگ من با file_get_content و curl تست کردم، چون اینا موتور js ندارن عملا ولیدیشن سمته کاربر که توسط جاوااسکریپت توی المنت body ست میشه کار نمیکنه
---
نمیدونم میشه کاری کرد که توابع اینچنینی جاوااسکریپت روشون فعال باشه یا نه اگه بشه حرف اشپیلن درسته و امنیت خیلی میاد پایین
قالب سایت HTML5 هست ولی به نحوی کار شده که اگه پشتیبانی نشه هم سایت کارمیکنه. منظورم اینه که تکیه روی قابلیتهای اختصاصی HTML5 نبوده و بعنوان محور کار قرار نگرفته و Featureهای جانبی و به نوعی Utilityها رو در بر میگیره.

درمورد روشهایی که گفتین هم نه JS و نه قالبهای CSS اعمال نمیشن.
اشتباه نکن استاندارد قالب سایت به عنوان html5 تعریف شده ولی توی قالب تا جایی که دیدم حتی یک مورد از هم تگ های html5 استفاده نشده!
مهم تگهای html5 هست.
----
شما تصویر رو توی متغیر میزاری که چی بشه؟ خلاصه اگر میخوای کاربر مقدارش رو وارد کنه باید به کاربر نشون بدی!
در ضمن مقدار متغیر ها رو میشه با توابع API سیستم عامل مثل ReadProcessMemory و ... خوند.
----
curl , file_get_content صرفا محتوا رو میگیرن. واس اجرای js باید از http://phantomjs.org استفاده کرد.
پس اگه جاوااسکریپت فقط روی مرورگر کار میکنه، روش yii امنه و هیچ مشکلی نداره، حتی میتونست بدون جمع char code متنه خوده کپتچا رو روی المنت body ست کنه، چون نه اسپمر میتونه اونو ببینه، نه inspect element مرورگر
(14-07-1394، 02:47 ب.ظ)محسن نوری نوشته: [ -> ]شما تصویر رو توی متغیر میزاری که چی بشه؟ خلاصه اگر میخوای کاربر مقدارش رو وارد کنه باید به کاربر نشون بدی!

عکسو به کاربر نشون میدیم متنه عکسو میزاریم توی متغیر
نه موضوع اینه که چون توی سورس کد هشی که برای اعتبارسنجی لازمه وجود داره، میشه با این ابزارها خوند و فرم رو بصورت درخواست عادی فرستاد که اونم البته اگه مواردی مثل CSRF Protection و... رو فعال کنید، منتفیه اما در کل نیازی به JS نداره. و البته اگه ولیدیشن AJAX رو استفاده کنید، این موضوع کاملاً منتفی میشه.
صفحات: 1 2 3 4 5 6