PDA

View Full Version : ایرادات وارد بر AJAX



manager
جمعه 22 اردیبهشت 1385, 11:23 صبح
سلام

من می خوام توی این تاپیک از شما دعوت کنم ایرادات وارد بر تکنولوژی AJAX رو بیان کنید تا در آخر یک جمع بندی در این باب انجام بدیم ...:تشویق:

manager
جمعه 22 اردیبهشت 1385, 11:26 صبح
خوب به نظر من یکی از ایراداتش اینه که اگر وسط کار گیر کنه کاربر دیگه کاری از دستش بر نمی یاد !!! یعنی مثلا با Refresh صفحه و این حرفا کاری از پیش نمی ره ...

titbasoft
جمعه 22 اردیبهشت 1385, 12:16 عصر
نقاط قوت:

1) افزایش قدرت UI
2) قابلیت استفاده از چند thread در جهت بالا بردن سرعت انجام عملیات
3) کاهش زمان انتظار به علت به علت کاهش حجم اطلاعاتی که transfer می شود
4) جداسازی بهتر عملیاتی که در یک صفحه انجام می شوند.
5) کاهش ترافیک

نقاط ضعف:
1) افزایش محسوس زمان و هزینه پیاده سازی
2) گوناگونی و تفاوت های محسوس در نحوه پیاده سازی Ajax در component های مختلف. به زبان دیگر نداشتن یک استاندارد و یا چهارچوب کاری ثابت.
3) افزایش ضریب ریسک های امنیتی
4) تضاد با نحوه navigation و bookmark گذاری کلاسیک که در Browser های کنونی پشتیبانی می شوند.
5) پنهان شدن content از دید search engine ها.
6) ساپورت نشدن و حتی گاها عدم استفاده کاربران از JavaScript و XMLHttpRequest
7) عدم دسترسی Ajax به بعضی از منابع. مثلا session state یا منابعی خارج از محدوده سرور.

manager
جمعه 22 اردیبهشت 1385, 14:47 عصر
نقاط قوت:

نقاط ضعف:
..
3) افزایش ضریب ریسک های امنیتی
...

به نظر من AJAX باعث پائین اومدن امنیت نمی شه چرا که در لایه Presentation قرار داره و از منطق دسترسی به اطلاعات دوره !!! ما هر آنچه را که می خواهیم نمایش دهیم و یا از کاربر انتقال دهیم به صورت مقادیر XML یا Text از طریق HTTP انتقال می دهیم, دیگه فکر نمی کنم توی این مرحله Security مهم باشه .. نظر شما چیه ؟

titbasoft
جمعه 22 اردیبهشت 1385, 17:02 عصر
به نظر من AJAX باعث پائین اومدن امنیت نمی شه چرا که در لایه Presentation قرار داره و از منطق دسترسی به اطلاعات دوره !!! ما هر آنچه را که می خواهیم نمایش دهیم و یا از کاربر انتقال دهیم به صورت مقادیر XML یا Text از طریق HTTP انتقال می دهیم, دیگه فکر نمی کنم توی این مرحله Security مهم باشه .. نظر شما چیه ؟دسترسی غیر مجاز به هر لایه کاملا می تونه باعث پایین آمدن امنیت سیستم بشه. این درسته که نفوذگری که به لایه های پایین تر دسترسی پیدا می کنه با دست باز تری می تونه فعالیت های خودش رو انجام بده اما این دلیلی برای مورد استفاده قرار نگرفتن لایه های بالاتر برای نفوذ نمیشه.در روشهای معمول و پیش پا افتاده ای چون cross site scripting یا sql injection با استفاده از نقاط ضعف همین لایه برای نفوذ استفاده می شه. اگر کمی فکر کنید می بینید که خود cross site scripting چقدر می تونه برای ajax مضر باشه.
ضمنا تمام مسائل فوق الذکر به شرط طراحی صحیح و بدون نقص نرم افزار صادقه. در بسیاری از سیستم هایی که در ایران عزیز بسته میشن دسترسی به لایه های بالا می تونه به مراتب خطرناک تر از دسترسی به لایه های پائین باشه. یه مثال: یک assembly فایل net. از سایت یکی از غول های نرم افزار ایران بدست حقیر رسید. جالبه که connection string کد شده بود. و حتی اسمبلی فایل هم obfuscate شده بود. اما با یک خط کد ساده (در حد response.write) به راحتی به connection string دسترسی پیدا می کردید. اگر معنی این رو بدونید به راحتی متوجه می شید که احتمالا connection string به صورت global تعریف شده. به این کار می گن بتون کشی جلوی در و باز گذاشتن پنجره.

Inprise
جمعه 22 اردیبهشت 1385, 20:11 عصر
3) افزایش ضریب ریسک های امنیتی
4) تضاد با نحوه navigation و bookmark گذاری کلاسیک که در Browser های کنونی پشتیبانی می شوند.
5) پنهان شدن content از دید search engine ها.
6) ساپورت نشدن و حتی گاها عدم استفاده کاربران از JavaScript و XMLHttpRequest
7) عدم دسترسی Ajax به بعضی از منابع. مثلا session state یا منابعی خارج از محدوده سرور.

- ریسک امنیتی جدیدی وجود نداره ؛ ajax صرفا" کمک میکنه ارسال و دریافت ، به بازخوانی کل صفحه منجر نشه ، داده هائی که ارسال میشن همان هائی هستند که قبلا" ارسال میشدند و به همان روشی دریافت میشن که قبلا" دریافت میشن ؛ چیزی که ریسک امنیتی متفاوتی ایجاد کنه مطلقا" وجود نداره .

- قاعدتا" از ajax برای تبادل لحظه ای داده هائی که محتویات اونها باید در زمان اجرا و بصورت دینامیک تعیین بشن مورد استفاده قرار میگیره ، که این داده ها هیچ وقت موضوعیتی برای موتورهای جستجو ندارند . کسی برای یک صفحهء خبری در یک خبرگذاری از ajax استفاده نمیکنه ، چون کاربردی برای چنین مواردی نداره ، و اگر برای یک grid یا یک data entry form ازش استفاده بشه ، لازم نیست نامی از موتور جستجو ببریم ، چون داده هائی از این قبیل ارتباطی با موتور جستجو ندارند .

- چون بخش مهم ajax بصورت client Side پیاده سازی میشه ، به هر منبعی که سمت کلاینت وجود داره دسترسی داره .

مواردی که ذکر شده نه تنها جزو نواقص ajax نیستند ، که حتی ارتباطی هم با ajax ندارند . ajax چیزی بیشتر از کمی خلاقیت در ارسال و دریافت روی وب نیست ، و وجود یک نام انحصاری و کمی هم جنجال ژورنالیستی نباید باعث بشه خیال کنید اتفاق منحصر به فردی افتاده که میشه در موردش به تفصیل به نکاتی جدید و متفاوت اشاره کرد ؛

manager
جمعه 22 اردیبهشت 1385, 20:35 عصر
بنده هم همین رو عرض کردم AJAX نمی تونه باعث ضعف امنیتی در سیستم بشه چون همان چیزیست که قبلا به طرق دیگری ایجاد ارتباط می کرد .. همان طور که دوست عزیزم آقای Inprise فرمودن AJAX ضعف امنیتی جدیدی برای سیستم ها خلق نکرده است و این گونه خطرها که جناب titbasoft فرمودن از قبل وجود داشته است و به خاطر این تکنولوژی نیست !!!!!!!!

titbasoft
جمعه 22 اردیبهشت 1385, 20:43 عصر
افزایش ضریب ریسک های امنیتی:
http://www.devx.com/webdev/Article/28861
این قبول که چیز جدیدی بوجود نیومده . اما امکانات بیشتری برای سوء استفاده فراهم شده.


قاعدتا" از ajax برای تبادل لحظه ای داده هائی که محتویات اونها باید در زمان اجرا و بصورت دینامیک تعیین بشن مورد استفاده قرار میگیره آیا این دلیل خاصی داره؟ مثلا اگر در یک صفحه که به کاربران اجازه می دیم صفحات یک کتاب رو بخونن از Ajax استفاده کنیم مشکل خاصی بوجود میاد؟


چون بخش مهم ajax بصورت client Side پیاده سازی میشه ، به هر منبعی که سمت کلاینت وجود داره دسترسی داره برای دسترسی به بعضی از منابع سمت سرور چه راه حلی وجود داره؟ مثل session ها

manager
جمعه 22 اردیبهشت 1385, 23:29 عصر
1- دوست من جناب titbasoft مشکل دستیابی به منابع سمت سرور مثل session چیزی نیست که قابل حل نباشه (البته همین حالا به راحتی می توان از این قابلیت در asp.net2.0 بدون هیچ کامپونت اضافی استفاده کرد) !!!!!!
2- فکر کنم منظور آقای Inprise و من از security این بوده که سایت از دست مهاجمین و خلافکاران ایمن هست (شما در ابتدای صحبتتون هم چنین چیزی رو مطرح کردید) ولی مقاله شما ایمنی را از سمت کاربر مد نظر قرار داده نه از سمت یک website !!!

البته من شخصا با مطالب این مقاله موافق نیستم چون خیلی یک طرفه و خصمانه به ماجرا نگاه شده ... معمولا این قبیل مسائل جهت موضوعات واهداف خاص است که در کل احتمال به سرقت رفتن اطلاعات یه کاربر بسیار بسیار کم است...

احتمالا به زودی زود نرمافزارهای شناسائی کدهای جاسوسی به بازار وارد می شن ...:چشمک:

SoheilKH
جمعه 22 اردیبهشت 1385, 23:34 عصر
برا ی دسترسی به Session ها مشکل خاصی نیست خیلی راحت می تونی Session را بخونی و بنویسی.
توی AjaxPro.net این امکان گذاشته شده .Sample این کار توی ورژن های قدیمی این کامپوننت قابل مشاهده بود. اما توی ورژن های جدید این Sample ها رو برداشته.

البته توی Cache (http://72.14.207.104/search?q=cache:7QzmgLCEIWsJ:ajaxpro.schwarz-interactive.de/+ajaxpro+httpSessionStateRequirement&hl=en&ct=clnk&cd=1) گوگل هست.می تونی استفاده کنی.

Inprise
شنبه 23 اردیبهشت 1385, 06:18 صبح
اما امکانات بیشتری برای سوء استفاده فراهم شده.

امکانات بیشتری فراهم نشده ، این امکانات وجود داشت ، یک اسم جدید بهش دادن و در موردش سر و صدا میکنند ؛ از هر کودکی که اندکی با جاوا اسکریپت و توسعه برای وب آشنا باشه میتونی این نکته بدیهی رو بشنوی که بعد از فراخوانی کامل یک صفحه وب میشه تعامل کاربر با صفحه وب رو بصورتی که صفحه بازخوانی نشه به سرور ارسال کرد ، این به خودی خود نه تهدید امنیتی محسوب میشه ، و نه یک پدیده جدید . عده ای که وب رو اخیرا" شناختن شاید از تکرار کلمهء ajax و سر و صدا و قیل و قال فضائی بسازند که انگار چیز جدیدی اختراع شده ، اما برای کسانی که سالهاست با وب آشنا هستند اتفاق به خصوصی نیفتاده ، و تهدید یا ریسک "جدید"ی که مرتبط با یک فناوری جدید یا متفاوت باشه وجود نداره .

دربارهء بقیه موارد هم مسئله همینطوره . هر چیزی که قبلا" بود ، طبیعتا" حالا هم هست ، و میشه با کتابخانه های متداول ajax ازش استفاده کرد ، و هر چیزی که نبوده ، یعنی عملی نبوده ، و حالا هم نیست . اصولا" ajax مبحثی نیست که بشه در موردش با این شکل و شمایل که یک چیز جدید هست حرف زد ، وقتی از ajax صحبت میکنی داری از اچ تی ام ال و جاوا اسکریپت و استاندارد وب حرف میزنی ، این حرفها سالهاست که زده میشه ، میشه به همونها مراجعه کرد .

titbasoft
شنبه 23 اردیبهشت 1385, 07:12 صبح
این درسته که تکنولژی جدیدی بوجود نیامده. و فکر کنم حتی از این چیزی که الان اسم AJAX روش گذاشته شده از سالها پیش با نام Remote Scripting استفاده می شده. و شکی هم در این نیست که AJAX چیزی جز یک خلاقیت نیست. اما به نظر می رسه اگر این خلاقیت به نحو ناشیانه ای مورد استفاده قرار بگیره می تونه باعث کوتاه تر شدن مسیر نفوذ بشه.

manager
شنبه 23 اردیبهشت 1385, 16:07 عصر
... عده ای که وب رو اخیرا" شناختن شاید از تکرار کلمهء ajax و سر و صدا و قیل و قال فضائی بسازند که انگار چیز جدیدی اختراع شده ، اما برای کسانی که سالهاست با وب آشنا هستند اتفاق به خصوصی نیفتاده ، و تهدید یا ریسک "جدید"ی که مرتبط با یک فناوری جدید یا متفاوت باشه وجود نداره .


من ادعا نمی کنم که خیلی خوب وب رو می شناسم ولی سالهاست که با TCP/IP و Remoting و Network Programming و وب و ... آشنائی دارم, و شاگرد همه ی شما دوستان عزیزم هستم, یکی از دلایلی که اصلا اسم AJAX رو بنده آوردم این بوده که AJAX یه نگاه جدید برای من ایجاد کرد و اون این بود که برنامه های Desktop با برنامه های Web می تونند زیاد تفاوت نداشته باشند. یعنی به جائی می رسیم که سرعت در اینترنت بسیار زیاد می شه و کاربر می تونه تفاوتی رو بین برنامه های تحت وب و desktop حس نکنه. همش همین !!!!!!!!

بله دوست من AJAX هیچ چیز نیست به جز javascript مزخرف و یک شیئ دیگه به نام XMLHttp. سالهاست که وجود داره و کسی هم منکر این مطلب نیست ولی نگاه جدید و ایده جدیدی که برای تولید برنامه ها به ما داده می تونه قابل اهمیت باشه...



این درسته که تکنولژی جدیدی بوجود نیامده. و فکر کنم حتی از این چیزی که الان اسم AJAX روش گذاشته شده از سالها پیش با نام Remote Scripting استفاده می شده. و شکی هم در این نیست که AJAX چیزی جز یک خلاقیت نیست. اما به نظر می رسه اگر این خلاقیت به نحو ناشیانه ای مورد استفاده قرار بگیره می تونه باعث کوتاه تر شدن مسیر نفوذ بشه.


اما دوست من شما دوباره برگشتید به بحث اول تون (قبل از ارائه مقاله). جناب آقای Inprise فرمودن و فرمودهایشان دقیقا حرف های من بود; AJAX هیچ کدام ار مرتبه های نفوذ به یک سرور را راحت تر نمی سازد چون کار خاصی جز ارسال اطلاعات به کاربر نهائی و گرفتن داده ها از او نمی کند.. این تکنیک در بالاتری و بی اهمیت ترین لایه صورت می گیرد و اگر چنین نباشد مشکل از این تکنولوژی نیست و مشکل از سمت توسعه گر می باشد...
راه های نفوذی همیشه باز است این تکنیک نه آنها را باز تر می کند نه تنگتر, و هیچ ربطی به AJAX ندارد.

تنها چیزی که می توان (فعلا) به عنوان یک ایراد به AJAX گرفت این است که این تکنیک می تواند عکس العمل های کاربر را به طور مخفیانه برای دستگاه دور ارسال و ثبت کند و کاربر از این موضوع اطلاعای ندارد.

manager
یک شنبه 24 اردیبهشت 1385, 09:25 صبح
1- اولین مشکلی که در تاپیک قبلی بهش اشاره کردم مشکل امنیت اطلاعات برای کاربر بود که می تونه در حقیقت اطلاعات کاربر را به
سرقت ببره اما نکته مهمتر اینه که فکر نکنید که خوب شما وارد یه سایت می شوید و اطلاعات شامل حرکت موس و اطلاعات وارد شده به
چه درد اون می خوره !!!!!!!
با AJAX من می تونم Username و Password مربوط MailBox و یا کارت اعتباری شما رو به سرقت ببرم بدون اینکه شما بفهمید و این
بزرگترین ریسک امنیتی ست که می تونه اتفاق بیافته...فقط کافی هنگام رسیدن صفحه مورد نظر به دست شما (حالا اون صفحه می
تونه مثلا صفحه Login سایت مورد نظر شما باشه) من مقداری کد AJAX به صفحه طزریق کنم و کار تمومه !!!!!!!!!!

2- شما نمی تونید درخواست های زیادی را با استفاده از AJAX ارسال کنید. دلیل این مطلب هم این هست که شما حداکثر مجاز به
استفاده از دو کانکشن باز همزمان برای یک پردازش (IE) هستید.
3- بالا رفتن هزینه نگه داری و پیاده سازی رابط نرم افزار (همون طور که آقای titbasoft اشاره کردند)
4- همه ی Browserها نمی تونن شیئ XMLHTTP و یا XMLHTTPRequest رو ساپورت کنند
5- باعث از دست دادن قابلیت های Browser از جمله Bookmark و Back و از همه مهمتر Offline Checking.. می شه
6-دوگانگی کد در برنامه

Inprise
یک شنبه 24 اردیبهشت 1385, 19:03 عصر
با AJAX من می تونم Username و Password مربوط MailBox و یا کارت اعتباری شما رو به سرقت ببرم بدون اینکه شما بفهمید و این
بزرگترین ریسک امنیتی ست که می تونه اتفاق بیافته...فقط کافی هنگام رسیدن صفحه مورد نظر به دست شما (حالا اون صفحه می
تونه مثلا صفحه Login سایت مورد نظر شما باشه) من مقداری کد AJAX به صفحه طزریق کنم و کار تمومه !!!!!!!!!!

خیر . نه تو و نه هیچکس دیگری نمیتونه کد جاوا اسکریپت به صفحهء وب میل کلاینت من تزریق کنه ، مگر اینکه قبلا" به سرور نفوذ کرده باشه . این مساله ارتباطی به ajax نداره .

شما نمی تونید درخواست های زیادی را با استفاده از AJAX ارسال کنید. دلیل این مطلب هم این هست که شما حداکثر مجاز به
استفاده از دو کانکشن باز همزمان برای یک پردازش (IE) هستید.

مایکروسافت اخیرا" مستندی در این زمینه منتشر کرده که تو به تنهائی در جریانش باشی ؟! تعداد سوکتهائی که هر مرورگر میتونه باز کنه محدودیتی نداره ؛

همه ی Browserها نمی تونن شیئ XMLHTTP و یا XMLHTTPRequest رو ساپورت کنند

همه مرورگرهای معروف و متداولی که این روزها مورد استفاده قرار میگیرن این ویژگی رو حمایت میکنند .

باعث از دست دادن قابلیت های Browser از جمله Bookmark و Back و از همه مهمتر Offline Checking.. می شه

همانطور که قبلا" اشاره شد ، از Ajax برای انتقال اطلاعاتی که بهر ترتیب در زمان اجرا و بسته به نوع درخواست کار تولید میشن استفاده میشه ، مانند عموم صفحات - واقعا" - دینامیک وب ، که مساله نگهداری آفلاین و بوک مارک برای اونها بی معناست

دوگانگی کد در برنامه

- خوبه که علاقه دارید ؛ اما سعی کنید در مورد هر چیزی وقتی لازمه و اونطوری که درست اظهار نظر کنید . حرف بی مورد زدن نه برای نویسنده مفیده نه برای مخاطبین .

Inprise
یک شنبه 24 اردیبهشت 1385, 19:05 عصر
این درسته که تکنولژی جدیدی بوجود نیامده. و فکر کنم حتی از این چیزی که الان اسم AJAX روش گذاشته شده از سالها پیش با نام Remote Scripting استفاده می شده. و شکی هم در این نیست که AJAX چیزی جز یک خلاقیت نیست. اما به نظر می رسه اگر این خلاقیت به نحو ناشیانه ای مورد استفاده قرار بگیره می تونه باعث کوتاه تر شدن مسیر نفوذ بشه.

استفاده ناشیانه از هر چیزی میتونه اسباب دردسر باشه ، و این دلیل خوبی برای وجود ایراد در اون چیز نیست . اما هیچ استفاده ناشیانه ای از Ajax باعث "کوتاه تر" شدن مسیر نفوذ نمیشه . دشواری تغییر نمیکنه ، چون اصولا" چیزی تغییر نکرده .

manager
شنبه 30 اردیبهشت 1385, 20:33 عصر
در زیر برخی از مشکلات نام برده شده قبلی رو تشریح کردم :

2- متاسفانه یکی از نواقص AJAX اینه که شما حداکثر می تونید دو اتصال باز همزمان به سرور داشته باشید. به خاطر همینه که شما حداکثر می تونید دو فایل رو به صورت همزمان از IE و یا سایر Browser ها دانلود کنید.
منابع :
http://www.faqs.org/rfcs/rfc2616.html
http://blogs.msdn.com/ie/archive/2005/04/11/407189.aspx

4- از نواقص دیگر AJAX می تونم به پشتیبانی نکردن 13% Browser های کاربران اشاره کنم :
Ajax Compatible Browsers: 78%
Speech Browsers: 2%
Mobile Browsers: 11% of users
Other browsers or earlier versions: 10% of users

طبق آمارگیری انجام شده در نوامبر سال 2005 مشخص شده است که مرورگرهای 13% کاربران نمی توانند AJAX رو پشتیبانی کند.
منبع :
http://useit.com/alertbox
http://useit.com/

5- بعضی وقت ها نیاز بوده که اطلاعات مربوط به یک DropDownList نیز برای ما اهمیت داشته و با ذخیره کردن مجدد صفحه (Save AS) صفحه دلخواه رو ذخیره کردیم و یا بعدا به صورت Offline بهش مراجعه کردیم.. استفاده از AJAX برنامه نویس رو تحریک می کنه تا بیشتر و بیشتر از این تکنیک استفاده کنه چرا که برنامه بیشتر شبیه به یک Desktop App می شه و همین باعث می شه ما امکانات مرورگر رو ازقبیل دکمه ی Back و یا مشاهده Offline و یا ذخیره مجدد رو از دست بدیم. درصورتی که کنترل مذبوری که ازش صحبت کردم با استفاده از تکنیک AJAX پر می شد دیگه نمی توان اطلاعات مربوط به اون DropDownList رو به هیچ طریقی ذخیره کرد و این یه محدودیته !!!!!.. !!!!!.. و باز هم یه نقص دیگه !!!!!

__________

به نظر من بهتره به جای استفاده از واژه ی منحوس و نا مانوس تکنولوژی AJAX از واژه ی مناسب تر و شایسته تر تکنیک AJAX استفاده کنیم چون هر
موقع اسم تکنولوژی می یاد آدم یاد یه چیز قول پیکر پیچیده و جدید می افته ولی همون طور که دوست خوبم آقای Inprise فرمودند AJAX هیچی
نیست !!!!!!!!!!!!!

titbasoft
شنبه 21 بهمن 1385, 15:46 عصر
http://blogs.msdn.com/joestagner/archive/2007/01/12/upcoming-ajax-security-webcasts.aspx