PDA

View Full Version : سوال: سوال در مورد انتخاب زبان برنامه نویسی و راهنمائی در مورد انجام یک پروژه



miladanimator
سه شنبه 09 آذر 1389, 16:41 عصر
سلام دوستان .

من همزمان با انجام یک پروژه دارم vb.ndt رو یاد می گیرم .

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

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

اما میشه با sql injection راحت لاگین کرد . برای جلوگیری از sql injection چی کار بارد کرد ؟؟

یک سوال دیگه هم دارم : اینکه اطلاعات سرور دیتابیس و نام کاربری و پسورد دیتابیس رو در سورس برنامه وارد می کنیم خطر ساز نیست ؟ روشی برای حفاظت هست ؟

محسن شامحمدی
چهارشنبه 10 آذر 1389, 16:49 عصر
برای جلوگیری از sql injection چی کار بايد کرد ؟؟



اين كه زياد بحث شده

http://www.pcpedia.ir/ViewArticle.aspx?ID=128

چند سوال در مورد SQL Injection (http://barnamenevis.org/showthread.php?68209-%DA%86%D9%86%D8%AF-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-SQL-Injection)

saeidi.yusuf
سه شنبه 16 آذر 1389, 14:40 عصر
دوست عزیز سلام:
در مورد سوال دوم شما باید بگم خطرناک نیست چون کسی غیر از شما و ادمین سرور شما به کد های برنامه دسترسی نداره و از نظر استانداردی هم بهتر که اطلاعات دیتابیس تون رو داخل web config سایت وارد کنید و از اونجا اطلاعات رو بخونید که اگه زمانی دیتا بیس شما تغییر کرد نیازی به دست بردن در کد برنامه نداشته باشید.در ضمن شما می تونید اطلاعات دیتا بیس رو اگر خیلی امنیت برای شما اهمیت داره کد شده در webconfig بنویسید و قبل از استفاده آنها رو دیکد کنید.

محسن شامحمدی
سه شنبه 16 آذر 1389, 18:39 عصر
یک سوال دیگه هم دارم : اینکه اطلاعات سرور دیتابیس و نام کاربری و پسورد دیتابیس رو در سورس برنامه وارد می کنیم خطر ساز نیست ؟ روشی برای حفاظت هست ؟
يعني يوزر نيم و پسورد داخل برنامه باشه(داخل سورسش؟).
اين كار يعني قرار دادن نيم و پسوردسايت به دست همممممممممممممه.
براي اين كه اين قضيه رو متوجه بشيد عبارت .net reflector رو جستجو كنيد.

saeidi.yusuf
چهارشنبه 17 آذر 1389, 09:52 صبح
يعني يوزر نيم و پسورد داخل برنامه باشه(داخل سورسش؟).
اين كار يعني قرار دادن نيم و پسوردسايت به دست همممممممممممممه.
براي اين كه اين قضيه رو متوجه بشيد عبارت .net reflector رو جستجو كنيد.

دوست عزیز سلام:
واقعا اگه راهی بلد هستین که اطلاعات داخل سورس یک سایت رو بخونید می تونید خودتون و یکی از بزرگترین چهره های دنیای Web بدونید و مقالات و کتاب های بیشماری ر و در این ضمینه به ثبت برسونید و مطمئن باشید خود من اولین کسی خواهم بود که کتاب هاتون رو خریداری می کنم.
سورس سایت شما فقط توسط کسی که به سرور سایت شما دسترسی داره قابل دیدن هست.
در ضمن همون جوری که در بالا گفتم راه درستش اینه که اطلاعات دیتا بیس رو داخل web config سایتتون قرار بدید(البته web config هم توسط کسی که به سرور دسترسی داره قابل دسترسی یه) تا اگر زمانی تغییراتی در دیتا بیس انجام شد ادمین سرور شما بتونه بدون نیاز به شما تنظیمات رو تصحیح کنه و نیازی به دست بردن توی کد برنامه نباشه.
در ضمن اگه تنظیماتتون در داخل کد وجود داره مراقب error های سایتتون باشید چون ممکنه در هنگام error سورس کد شما داخل مرورگر نمایش داده بشه برای جلوگیری از این قضیه نباید در web config مقدار custom error رو off قرار بدید

miladanimator
شنبه 20 آذر 1389, 23:41 عصر
دوست عزیز سلام:
در مورد سوال دوم شما باید بگم خطرناک نیست چون کسی غیر از شما و ادمین سرور شما به کد های برنامه دسترسی نداره و از نظر استانداردی هم بهتر که اطلاعات دیتابیس تون رو داخل web config سایت وارد کنید و از اونجا اطلاعات رو بخونید که اگه زمانی دیتا بیس شما تغییر کرد نیازی به دست بردن در کد برنامه نداشته باشید.در ضمن شما می تونید اطلاعات دیتا بیس رو اگر خیلی امنیت برای شما اهمیت داره کد شده در webconfig بنویسید و قبل از استفاده آنها رو دیکد کنید.

ممنون . من تازه کارم در زمینه نرم افزار تحت وب . برای همین اینجوری فکر می کردم .

یه سوال دیگه . من برنامه های تحت وب اختصاصی زیاد نوشتم و علیرغم کد کردن سورس به روش های مختلف ، سورس کد ها بهدست افراد مختلف افتاده . الان قصد دارم قسمت مدیریت سایت هایی رو که می نویسم ، کلا از حالت تحت وب ،حذف کنم و به صورت تحت ویندوز در بیارم . بهنظرتوناین کار منطقی هست ؟ بیشتر هم با دیتابیس mysql کار می کنم

miladanimator
شنبه 20 آذر 1389, 23:48 عصر
دوست عزیز سلام:
در مورد سوال دوم شما باید بگم خطرناک نیست چون کسی غیر از شما و ادمین سرور شما به کد های برنامه دسترسی نداره و از نظر استانداردی هم بهتر که اطلاعات دیتابیس تون رو داخل web config سایت وارد کنید و از اونجا اطلاعات رو بخونید که اگه زمانی دیتا بیس شما تغییر کرد نیازی به دست بردن در کد برنامه نداشته باشید.در ضمن شما می تونید اطلاعات دیتا بیس رو اگر خیلی امنیت برای شما اهمیت داره کد شده در webconfig بنویسید و قبل از استفاده آنها رو دیکد کنید.

ممنون . من تازه کارم در زمینه نرم افزار تحت وب . برای همین اینجوری فکر می کردم .

یه سوال دیگه . من برنامه های تحت وب اختصاصی زیاد نوشتم و علیرغم کد کردن سورس به روش های مختلف ، سورس کد ها بهدست افراد مختلف افتاده . الان قصد دارم قسمت مدیریت سایت هایی رو که می نویسم ، کلا از حالت تحت وب ،حذف کنم و به صورت تحت ویندوز در بیارم . بهنظرتوناین کار منطقی هست ؟ بیشتر هم با دیتابیس mysql کار می کنم

saeidi.yusuf
یک شنبه 21 آذر 1389, 08:42 صبح
دوست عزیز سلام:
سوال شما رو از جنبه های مختلفی می شه بررسی کرد فقط قبلش، من متوجه ی منظور شمااز کد کردن سورستون نشدم.حالا ببینیم کار شما کار منطقی هست یا نه؟
در بحث مهندسی نرم افزار بدون هیچ شکی مهمترین مسئله stakeholder است یا تو معنای خودمونیش کسی که شما دارید برای اون برنامه می نویسید و رضایتش برابر با موفقیت برنامه ی شماست.بردن بخشی از یک برنامه ی تحت وب به یک برنامه ی ویندوزی مسلما در درجه ی اول نیاز به رضایت stakeholder شما داره و شما باید قبل از هر گونه تصمیمی در این مورد stakeholder تون رو از تمامی جوانب این کار آگاه کنید.مثلا اینکه مدیر سایت شما فقط می تونه از پشت کامپیوتر خودش سایتش و میدیریت کنه.
در بحث امنیت و حفاظت از سورس برنامه ی شما سروری که سایت شما بر روی اون قرار می گیره کاملا مسئول است و توی قرارداد با هاست تون می تونید موارد تاکیدی قرار بدید گرچه انجا ایران و خیلی مسائل رعایت نمی شه ولی بنظر من خودتون رو زیاد درگیر حفاظت از سورستون نکنید.
از توسعه و گسترش برنامه ،این کار کار درستی نیست و اگه زمانی شما بخواهید که برنامتون رو به افراد دیگه ای بفروشید، به این مسئله به عنوان یک عیب نگاه میکنند( که منطقی هم هست).
در کل به نظر من اگه stakeholder شما با این امر موافق باشه می تونید این کار و انجام بدید ولی بعد ها احتمالا مجبور بشید دوباره یه پنل تحت وب برای مدیریت سایت بنویسید و اگر stakeholder موافق نباشه و یا شما بخواهید این مسئله رو تحمیل کنید انجام این کار هم کار غیر حرفه ای هست(موجب شکست خوردن پروژهتون می شه) و هم کار غیر اخلاقی (اون دنیا شاید تاوان بدی:چشمک:)

محسن شامحمدی
یک شنبه 21 آذر 1389, 16:08 عصر
پروژه من مدیریت یک فروشگاه اینترنتی از طریق نرم افزار تحت ویندوز هست . یعنی نرم افزار به دیتابیس سرور وصل میشه و می تونیم موارد مختلف رو مدیریت کنیم .


در مورد سوال دوم شما باید بگم خطرناک نیست چون کسی غیر از شما و ادمین سرور شما به کد های برنامه دسترسی نداره و از نظر استانداردی هم بهتر که اطلاعات دیتابیس تون رو داخل web config سایت وارد کنید و از اونجا اطلاعات رو بخونید که اگه زمانی دیتا بیس شما تغییر کرد نیازی به دست بردن در کد برنامه نداشته باشید.در ضمن شما می تونید اطلاعات دیتا بیس رو اگر خیلی امنیت برای شما اهمیت داره کد شده در webconfig بنویسید و قبل از استفاده آنها رو دیکد کنید.

جناب saeidi.yusuf (http://barnamenevis.org/member.php?142801-saeidi.yusuf) .
اینطور که بنده از حرفای دوستمون متوجه شدم اینطوریه که برنامه داخل خودش یوزرنیم و پسورد سایت رو داره تا بهش کانکت بشه.
درسته؟
خب همین دیگه.
یعنی یوزرنیم و پسورد سایت در سورس برنامه Exe که قراره به دست همه برسه موجوده.درسته؟
اگر اینطوری باشه دوباره پست قبلیمو تاکید می کنم.

اين كار يعني قرار دادن نيم و پسوردسايت به دست همممممممممممممه.

miladanimator
یک شنبه 21 آذر 1389, 17:35 عصر
جناب saeidi.yusuf (http://barnamenevis.org/member.php?142801-saeidi.yusuf) .
اینطور که بنده از حرفای دوستمون متوجه شدم اینطوریه که برنامه داخل خودش یوزرنیم و پسورد سایت رو داره تا بهش کانکت بشه.
درسته؟
خب همین دیگه.
یعنی یوزرنیم و پسورد سایت در سورس برنامه Exe که قراره به دست همه برسه موجوده.درسته؟
اگر اینطوری باشه دوباره پست قبلیمو تاکید می کنم.


دوست عزیز مرسی از پاسخگوئیتون . من هم سوالم اینه که وقتی می خوام برنامه تحت ویندوز رو به دیتابیس روی سرور وصل کنم و برنامه روی سیستم 6-7 نفر که کارمندان شرکت هستند برای مدیریت سایت ، ممکنه برنامه به دست کسان دیگه هم بیافته . منم از اول این سوال توی ذهنم بود که برای اینکه مشکل امنیتی پیش نیاد و بتونم به دیتابیس سرور وصل بشم ، چیکار کنم ؟ چه راه کارهایی پیشنهاد می دین ؟ این همه نرم افزاری که به صورت عمومی استفاده می شن و به دیتابیس سرور وصل می شن چی کار کردن ؟