PDA

View Full Version : راهنمایی برای استفاده از Ajax



amirferdowsi
سه شنبه 13 بهمن 1388, 19:41 عصر
سلام به تمامی دوستان
اول بگم که سایت رو خوب جستجو کردم و جواب این سوالات رو پیدا نکردم .

من میخوام برای پروژه ای که دارم می نویسم از Ajax استفاده کنم و نمی خوام که از هیچ کلاس ، کنترل یا ابزارهای آماده این کار استفاده کنم حتی Updatepanel و ScriptManager خود دات نت . و برای اینکار از XMLHTTPRequest میخوام استفاده کنم
.
حالا دو سوال در این زمینه برام پیش اومده که ممنون میشم راهنمایی بفرمایید :
1. برای ارسال درخواست ها حتماً باید از QueryString و ارسال به صفحه دیگر استفاده کرد ؟
2. از آنجاییکه کدها به صورت جاوااسکریپت پیاده سازی میشه و زمان اجرا باید روی سیستم کلاینت بارگذاری بشه ، از لحاظ امنیتی مشکلی نداره ؟ یعنی بعد از دانلود فایل جاوااسکریپت و با استفاده از اون هیچ نفوذی به سایت صورت نمیگیره و خطری سایت رو تحدید نمی کنه ؟

mehdi.mousavi
چهارشنبه 14 بهمن 1388, 00:15 صبح
برای اینکار از XMLHTTPRequest میخوام استفاده کنم. حالا دو سوال در این زمینه برام پیش اومده که ممنون میشم راهنمایی بفرمایید :
1. برای ارسال درخواست ها حتماً باید از QueryString و ارسال به صفحه دیگر استفاده کرد ؟
2. از آنجاییکه کدها به صورت جاوااسکریپت پیاده سازی میشه و زمان اجرا باید روی سیستم کلاینت بارگذاری بشه ، از لحاظ امنیتی مشکلی نداره ؟ یعنی بعد از دانلود فایل جاوااسکریپت و با استفاده از اون هیچ نفوذی به سایت صورت نمیگیره و خطری سایت رو تحدید نمی کنه ؟


سلام.
1. می تونید مقادیر مورد نظر رو POST کنید به صفحه مقصد. (نیازی نیست حتما GET بشه، بعبارت دیگه از QueryString استفاده بشه، XmlHttpReq از POST هم پشتیبانی میکنه).
2. چه جور مشکلی؟ چه جور نفوذی؟ این کد قراره چه کاری انجام بده؟ تا وقتی به این سوالات پاسخ روشنی ندید، نمیشه در مورد امنیت روش صحبت کرد.

موفق باشبد.

amirferdowsi
چهارشنبه 14 بهمن 1388, 01:42 صبح
1. می تونید مقادیر مورد نظر رو POST کنید به صفحه مقصد. (نیازی نیست حتما GET بشه، بعبارت دیگه از QueryString استفاده بشه، XmlHttpReq از POST هم پشتیبانی میکنه).

سلام

بله اینو میدونم ، در زمان ASP کلاسیک برای انجام هر عملیاتی باید اطلاعات رو با استفاده از QueryString چه با متد get و چه با متد post ، به صفحه دیگری میفرستادیم و بعد از انجام عملیات مورد نظر کاربر به صفحه قبل یا صفحه دیگری فرستاده میشد . اما با اومدن ASP.NET دیگه اینکارها لازم نبود و میشد که عملیات ها در همان صفحه اجرا و نتیجه به کاربر نمایش داده بشه .
منظور من اینه که امکانش هست که پردازش ها در همان صفحه انجام بشه یا حتماً باید در صفحه دیگری انجام شود ؟



2. چه جور مشکلی؟ چه جور نفوذی؟ این کد قراره چه کاری انجام بده؟ تا وقتی به این سوالات پاسخ روشنی ندید، نمیشه در مورد امنیت روش صحبت کرد


چون هر کسی سورس رو میتونه ببینه و با دستکاری اون بجای پارامترهای برنامه ، پارامترهای خودش رو جایگزین و بعد برنامه رو اجرا کنه .
منظورم اینگونه نفوذها بود ( حمله از نوع XSS )

mehdi.mousavi
چهارشنبه 14 بهمن 1388, 10:41 صبح
سلام
بله اینو میدونم ، در زمان ASP کلاسیک برای انجام هر عملیاتی باید اطلاعات رو با استفاده از QueryString چه با متد get و چه با متد post ، به صفحه دیگری میفرستادیم و بعد از انجام عملیات مورد نظر کاربر به صفحه قبل یا صفحه دیگری فرستاده میشد . اما با اومدن ASP.NET دیگه اینکارها لازم نبود و میشد که عملیات ها در همان صفحه اجرا و نتیجه به کاربر نمایش داده بشه. منظور من اینه که امکانش هست که پردازش ها در همان صفحه انجام بشه یا حتماً باید در صفحه دیگری انجام شود؟ چون هر کسی سورس رو میتونه ببینه و با دستکاری اون بجای پارامترهای برنامه ، پارامترهای خودش رو جایگزین و بعد برنامه رو اجرا کنه . منظورم اینگونه نفوذها بود ( حمله از نوع XSS )

سلام.
اومدن یا نیومدن ASP.NET ربطی به XmlHttpReq نداره. شما از همون ابتدا هم میتونستید درخواست مورد نظرتون رو بسمت سرور ارسال کنید (بکمک XmlHtmlReq) و پاسخ رو سمت Client پردازش کنید. این مساله فارغ از تکنولوژی مورد استفاده سمت سرور هستش! اما اینکه آیا پردازشها میشه در همون صفحه انجام بشه یا خیر، بله. شدنی هستش. توی ASP.NET شما میتونید از Client Callback ها استفاده کنید. اما اگر اصرار در استفاده از XmlHttpRequest دارید، بازهم مساله تفاوتی نمیکنه. مهم اینه که درخواست رو بتونید به سرور ارسال کنید و سمت سرور، بتونید درخواست رو تشخیص داده، پاسخ متناظر با اونو تولید و برگردونید. در واقع، توی QueryString (یا به هر روش دیگه) باید سرور رو از اینکه درخواست شما باید یک XML یا JSON برگردونه، مطلع کنید. چون در غیر اینصورت بازهم صفحه ای که target اش همون Page شما هست، به Client بر میگرده!

اما متوجه نمیشم که چرا یه همچین کار عجیب و غریبی رو میخواهید انجام بدید. چه لزومی داره که همون صفحه، درخواستهای شما رو هم Handle کنه؟؟؟ (Client Callback ها دقیقا اینکارو میکنن، اما اگر بخواهید دستی اینکارو انجام بدید، باید از PAge Life Cycle در ASP.NET کاملا آگاه باشید). اگر چه، من چنین چیزی رو هرگز توصیه نمیکنم.

اینجا، شما باید از یک Web Service استفاده کنید. Web Service ای که به اینگونه درخواستها، پاسخ میده... نه اینکه UI و DAL و BLO و ... رو همشون رو توی یک Page قرار بدید و ...

در مورد امنیت. بله. عموما هر کاری که سمت Client انجام بشه، امکان bypass کردنش وجود داره. قطعا، فرد مهاجم میتونه پارامترهای ارسالی به سرور (از طریق XmlHttpReq) رو تغییر بده و از اون آگاه بشه...

شاید اگر دقیق بفرمایید که چه کاری میخواهید انجام بدید، بشه Solution بمراتب بهتری ارائه داد.

موفق باشید.

amirferdowsi
جمعه 16 بهمن 1388, 00:33 صبح
سلام
دوست عزیز از توجه و راهنمایی شما ممنونم . :تشویق:



در مورد امنیت. بله. عموما هر کاری که سمت Client انجام بشه، امکان bypass کردنش وجود داره. قطعا، فرد مهاجم میتونه پارامترهای ارسالی به سرور (از طریق XmlHttpReq) رو تغییر بده و از اون آگاه بشه...


آیا راه حلی برای جلوگیری از این نفوذها هست ؟؟:متفکر:



اومدن یا نیومدن ASP.NET ربطی به XmlHttpReq نداره. شما از همون ابتدا هم میتونستید درخواست مورد نظرتون رو بسمت سرور ارسال کنید


بله منم میدونم که هیچ ربطی نداره .
منظورم این بود که بعد از اومدن ASP.NET دیگه لازم نیست پارامترها رو به صفحه دیگری ارسال کنیم و در همان صفحه میشه با PostBack شدن صفحه اطلاعات مورد نظر رو گرفت.
کاری که در ASP کلاسیک و XMLHttpRequest نمیشه .:ناراحت:
همین:چشمک:



اما متوجه نمیشم که چرا یه همچین کار عجیب و غریبی رو میخواهید انجام بدید. چه لزومی داره که همون صفحه، درخواستهای شما رو هم Handle کنه؟؟؟ (Client Callback ها دقیقا اینکارو میکنن، اما اگر بخواهید دستی اینکارو انجام بدید، باید از PAge Life Cycle در ASP.NET کاملا آگاه باشید). اگر چه، من چنین چیزی رو هرگز توصیه نمیکنم.


من فقط میخواستم در این زمینه اطلاعات کسب کنم و بدونم آیا راه حل دیگری برای استفاده از Ajax به کمک XMLHttpRequest هست یا خیر . و مسلماً با توضیحات شما همچین کاری رو نخواهم کرد . :متعجب:

mehdi.mousavi
جمعه 16 بهمن 1388, 01:53 صبح
منظورم این بود که بعد از اومدن ASP.NET دیگه لازم نیست پارامترها رو به صفحه دیگری ارسال کنیم و در همان صفحه میشه با PostBack شدن صفحه اطلاعات مورد نظر رو گرفت. کاری که در ASP کلاسیک نمیشه

سلام.
تو Classic ASP هم میشد اینکارو کرد و تقریبا تمام کارهایی که من انجام داده ام (تا امروز) همگی از این ویژگی استفاده میکردن. یعنی لازم نیست بصرف گرفتن 4 تا پارامتر، صفحه دومی هم طراحی بشه که بخواد اونها رو بگیره و ... اصلا متوجه منظورتون نمیشم... لطفا دقیقا مشکلتون رو بیان کنید تا Solution مناسبی براش ارائه کنم. اینطوری کاری پیش نمیره و گمان نمیکنم پاسخهام راه گشای شما باشه.

موفق باشید.

amirferdowsi
جمعه 16 بهمن 1388, 15:29 عصر
لطفا دقیقا مشکلتون رو بیان کنید تا Solution مناسبی براش ارائه کنم.




نوشته شده توسط amirferdowsi
من فقط میخواستم در این زمینه اطلاعات کسب کنم و بدونم آیا راه حل دیگری برای استفاده از Ajax به کمک XMLHttpRequest هست یا خیر . و مسلماً با توضیحات شما همچین کاری رو نخواهم کرد .


باز هم از توجه شما ممنونم