PDA

View Full Version : امنیت آبجکت های asp.net



araelectronic@ymail.com
شنبه 04 دی 1389, 14:31 عصر
با سلام خدمت اساتید محترم
من از vs 2010 استفاده می کنم . می خواستم ببینم استفاده از آبجتهای خود asp.net مثلا details view و datasource امنیت بیشتری دارد یا اینکه خودمان برنامه نویسی کنیم ؟


با تشکر

aminghaderi
شنبه 04 دی 1389, 19:36 عصر
با سلام خدمت اساتید محترم
من از vs 2010 استفاده می کنم . می خواستم ببینم استفاده از آبجتهای خود asp.net مثلا details view و datasource امنیت بیشتری دارد یا اینکه خودمان برنامه نویسی کنیم ؟


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

موفق باشی.

araelectronic@ymail.com
شنبه 04 دی 1389, 22:15 عصر
دوست عزیز ممنون از جوابتون .
ولی یک مقدار در مورد detiles view بیشتر مطالعه کنید و در ضمن مبحث امنیت سوال شده بیشتر مربوط به datasource می شود ونحوه برقراری ارتباط با پایگاه داده ها و عملیات روی پایگاه .

aminghaderi
یک شنبه 05 دی 1389, 15:09 عصر
دوست عزیز ممنون از جوابتون .
ولی یک مقدار در مورد detiles view بیشتر مطالعه کنید و در ضمن مبحث امنیت سوال شده بیشتر مربوط به datasource می شود ونحوه برقراری ارتباط با پایگاه داده ها و عملیات روی پایگاه .
سلام .
خواهش می کنم.
چشم بنده در اولیل فرست مجدد مطالعه می کنم.
یه سری ابجکت های دات نت مثل dataset (شخصا با دیتا سورس کار نکردم ولی دیتاست تا دلتون بخواد کار کردم) زیاد قابل شبیه سازی نیست ، و اگر بخواهید شبیه سازی کنید ، باید تا عمق دات نت پیش برید و اونجا مباحث امنیتی رو باید حفظ کنید ، که به نظر من دلیل برای این کار ها وجود نداره چون الان سایت های خیلی بزرگ و سکرت دارند از همون ابجکت های پای ای دات نت (مثل data set یا sqlCommand یا ...) دارند استفاده می کنند.
ولی برای ابجکت ها مثل گرید یا دیتلز و یا ... می شه کامپوننت شخصی درست کرد و استفاده کرد ، من نمی دونم منظور شما از مطالعه بیشتر من چیه ؟! ولی تا جایی که اطلاعات گنجشکی من می گه اشیای مثل گرید و دیتلز و ... کار خاصی جز نمایش و درج و حذف داده ندارند و اون موارد اون ها هم کاملا safe هست.
حالا اگر موردی دیگری هست بفرمایید تا من برم در باره اش اطلاعاتم رو به روز کنم.

araelectronic@ymail.com
یک شنبه 05 دی 1389, 19:12 عصر
سلام دوست عزیز
ممنون از توضیحاتتون . از حرفم دلخور نشید در اطلاعات شما شکی نیست .
من سوالو بد پرسیدم .
ببینید detailesview وقتی استفاده میکنیم خیلی چیدمان خوبی داره به نسبت اینکه از چندین Textbox استفاده کنیم . به دو شکل میشه اطلاعات را در detailes نشون داد یا از اون خواند و وارد پایگاه داده کرد .
1- استفاده از آبجکت sqldatasource و بایند کردن فیلدهای detailesview

2- بایند کردن فیلدهای detailes با استفاده از دستورات .
تفاوتی که هست در حالت اول همه اطلاعات در صفحه design بشکل کدهای asp هستند ولی در حالت دوم با زبان برنامه نویسی دستورات را می نویسیم مثلا دستور insert یا دستورات بایند کردن حالا سوال من این هست که در کدوم حالت امنیت بیشتره ؟
با توجه به راحت بودن استفاده از این آبجکتهای خود .net چرا در اکثر سایتها از برنامه نویسی استفاده میشه ؟ البته بدون در نظر گرفتن محدودیتهای برنامه نویسی در این آبجکتها.
امیدوارم که سوالمو درست مطرح کرده باشم . اگر بازم نامفهوم باشه بفرمایید تا بیشتر توضیح بدم .
بازم ممنون از پیگیریتون .

Vahid_moghaddam
یک شنبه 05 دی 1389, 19:42 عصر
سلام دوست عزیز
ممنون از توضیحاتتون . از حرفم دلخور نشید در اطلاعات شما شکی نیست .
من سوالو بد پرسیدم .
ببینید detailesview وقتی استفاده میکنیم خیلی چیدمان خوبی داره به نسبت اینکه از چندین Textbox استفاده کنیم . به دو شکل میشه اطلاعات را در detailes نشون داد یا از اون خواند و وارد پایگاه داده کرد .
1- استفاده از آبجکت sqldatasource و بایند کردن فیلدهای detailesview

2- بایند کردن فیلدهای detailes با استفاده از دستورات .
تفاوتی که هست در حالت اول همه اطلاعات در صفحه design بشکل کدهای asp هستند ولی در حالت دوم با زبان برنامه نویسی دستورات را می نویسیم مثلا دستور insert یا دستورات بایند کردن حالا سوال من این هست که در کدوم حالت امنیت بیشتره ؟
با توجه به راحت بودن استفاده از این آبجکتهای خود .net چرا در اکثر سایتها از برنامه نویسی استفاده میشه ؟ البته بدون در نظر گرفتن محدودیتهای برنامه نویسی در این آبجکتها.
امیدوارم که سوالمو درست مطرح کرده باشم . اگر بازم نامفهوم باشه بفرمایید تا بیشتر توضیح بدم .
بازم ممنون از پیگیریتون .

تمام این روش هایی که گفتید (از جمله sqlDataSource و دوستانش) می رسه به ADO.NET
یک عده استفاده از مثلا SqlDataSource رو ترجیح می دن چون راحت تره. یک عده ترجیح می دن استفاده نکنند و دلشون می خواد تسلط بیشتری بر فرایند واکشی اطلاعات داشته باشند.
وقتی شما از SqlCommand استفاده می کنید، روش صحیح استفاده از پارامترها برای ایجاد Command هست که امکان Sql Injection رو کاهش می ده و مزایای دیگه. در SqlDataSource هم شما از پارامتر ها استفاده می کنید.
من فکر می کنم انتخاب بین این روش ها بیشتر به کارایی بر می گرده.

mehrdad201
دوشنبه 06 دی 1389, 01:07 صبح
همونطور که استاد عزیزم جناب امین فادری فرمودند. کنترلهایی که برای نمایش به کار میرن مشکل خاصی ندارند. به نظر من هم بهترینشون repeater هست. چون دست ادم خیلی بازه برای کارکردن باهاش. گرید ویو و .... هم خوبن اما در عمل صفحه رو سنگین میکنند. (البته اونم راه داره ولی خب انعطاف پذیریشون به نظر بنده حقیر کمتره)

در repeater هم شما از بایند کردن استفاده میکنید. در زمینه نوشتن کوئری هم شما میتونید یه کلاس برای کار با اس کیو ال بسازید و بعد در کنارش یه ابجکت دیتا سورس بسازید و ازش استفاده کنید.

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

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

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