واضح آرشیو وب فارسی:سایت ریسک: anvar.net26-02-2009, 10:03 AMسلام بچه ها!!! (البته می دونم که همتون آدمای بزرگ و نازنینی هستید). غرض از مزاحمت : امنیت برنامه هایی که ما می نویسم کلا یک مقوله حیاتی برای برنامه نویس هست البته در ایران وضع به مراتب خظرناک تره, قانونی هم برای حمایت از صنعت نرم افزار وجود نداره ........... اصلا وجود نداره. حالا همه چیز رو باید خودومون در حد توان حل کنیم. به مناسبت همون بی قانونی ذکر شده در بالا برای انکریپت کردن کدها و مسائل امنیتی در تولید نرم افزار تا حدی مشکلات حل شده اند بدون اینکه هزینه آنچنانی بپردازیم. منتها بانکهای اطلاعاتی همراه با برنامه ها همچنان در تیررس دستبرد هستند. سوال کلی من اینه : آیا راهی برای انکرپیت کردن اطلاعات موجود در بانکهای اطلاعاتی هست؟ یانه؟ آیا خود نرم افزارهای مدیریت بانک های اطلاعاتی همچنین امکاناتی دارند یا نه؟ البته به این نکته هم توجه بشه که خود برنامه اطلاعات را باید دکرپیت کنه و بصورت صحیح و درست به کاربر نشون بده, منظورم فقط اینه که خارج از دسترسی برنامه اگه کاربری خواست بصورت مستقیم از بانک استفاده کنه. نتونه به اطلاعات دسترسی داشته باشه اگر هم دسترسی پیدا کرد, اطلاعات انکریپت شده باشند تا نتونه کاری انجام بده پسورد هایی هم که ما واسه بانک می ذاریم خیلی زود شکسته می شن. پس زیاد نمی شه روش اعتماد کرد. البته واسه SQL من ندیدم. اما واسه access خودم تجربه کردم و جواب مثبت بود. shalineh26-02-2009, 06:15 PMسلام بچه ها!!! (البته می دونم که همتون آدمای بزرگ و نازنینی هستید). غرض از مزاحمت : امنیت برنامه هایی که ما می نویسم کلا یک مقوله حیاتی برای برنامه نویس هست البته در ایران وضع به مراتب خظرناک تره, قانونی هم برای حمایت از صنعت نرم افزار وجود نداره ........... اصلا وجود نداره. حالا همه چیز رو باید خودومون در حد توان حل کنیم. به مناسبت همون بی قانونی ذکر شده در بالا برای انکریپت کردن کدها و مسائل امنیتی در تولید نرم افزار تا حدی مشکلات حل شده اند بدون اینکه هزینه آنچنانی بپردازیم. منتها بانکهای اطلاعاتی همراه با برنامه ها همچنان در تیررس دستبرد هستند. سوال کلی من اینه : آیا راهی برای انکرپیت کردن اطلاعات موجود در بانکهای اطلاعاتی هست؟ یانه؟ آیا خود نرم افزارهای مدیریت بانک های اطلاعاتی همچنین امکاناتی دارند یا نه؟ البته به این نکته هم توجه بشه که خود برنامه اطلاعات را باید دکرپیت کنه و بصورت صحیح و درست به کاربر نشون بده, منظورم فقط اینه که خارج از دسترسی برنامه اگه کاربری خواست بصورت مستقیم از بانک استفاده کنه. نتونه به اطلاعات دسترسی داشته باشه اگر هم دسترسی پیدا کرد, اطلاعات انکریپت شده باشند تا نتونه کاری انجام بده پسورد هایی هم که ما واسه بانک می ذاریم خیلی زود شکسته می شن. پس زیاد نمی شه روش اعتماد کرد. البته واسه sql من ندیدم. اما واسه access خودم تجربه کردم و جواب مثبت بود. بله. جواب شما مثبت است. میتوان اطلاعات رو بصورت انکریپت شده در دیتا بیس وارد کرد و از نظر کار کرد نیز تاثیری روی سرعت ندارد. نمونه بارز این برنامه ها که اطلاعات را انکریپت شده در بانک وارد کرده اند عبارت است از : 1- لغت نامه دهخدا 2- برنامه شهر شکلک اثر اینجانب ( امضامو ببین ) _H2_01-03-2009, 10:49 AMسلام میتوانید فیلدهای حاوی اطلاعات مهم را رمز نگاری کنید. این کار مطمئن ترین راه است که معمولاً از رمزنگاری هش بیرای ذخیره پسوردها در بانک حتماً استفاده میشود. برای کد رمزنگاری دو طرفه (اگر اصلاً با این مطلب مشکل دارید، شاید خودتان بهتر بلد باشید.) میتوانید به نیمچه پست زیر مراجعه کنید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در واقع میتوانید هر اطلاعاتی را باینری یا String کنید. میتوان کد رمزنگاری را در خود دیتابیس هم مستقر کرد تا اعمال SQL راخت تر قابل انجام باشد، ولی این یعنی باز ضعف امنیتی ... ============== البته فراموش نشود که امنیت SQLServer تحت شبکه بسیار خوب و قوی است و حتی میتوان محدودیت دسترسی در سطوح بسیار جزئی تایین کرد. ولی کسی که به سرور دسترسی داشته باشد، نهایتاً با یک نصب مجدد ویندوز میتواند از این سدها عبور کند. یعنی برای یک سازمان با یک شبکه محلی خیلی راحت تر میتوان از دیتاها و به کمک SQLServer به صورت خودکار حفاظت کرد. anvar.net05-03-2009, 09:31 PMبا تشکر از دوستان و بویژه استاد عزیز و فرزانه آقای h2 , متاسفانه اطلاعات من در مورد کلاسهای ذاتی کریپتوگرافی و ........... در دات نت خیلی کمه, ولی موضوع کلی رو می فهم. ولی خوب بازم هم مسائل مبهم و مجهول زیاده : 1 - ما برای انکریپت کردن اطلاعات (شاید تمامی اطلاعات) نیاز به کلاسها و توابعی داریم تا اطلاعات رو هش و داخل بانک ذخیره کنند ... 2 - دوباره هنگام خواندن بانک و ارائه اطلاعات به کاربر باید اطلاعات از حالت هش خارج و بصورت واقعی نشان داده بشند, یعنی بعد از اتصال به بانک, اطلاعات از یه کانال تبدیلی رد بشند و در کنترلهای مورد نظر نمایش داده بشند............ آیا این فرایند دکد کردن منابع زیادی از سیستم می گیره و سرعت رو پایین می یاره یا نه. در ضمن یه سوال دیگه که البته شاید بصورت مستقل ارائه م یکردم بهتر بود, ایا برنامه هایی ساده ای که ما در دات نت می نویسم (البته دارای بانکهای اطلاعاتی) در حالت عادی بر روی شبکه هم قابل اجرا هستند یا نه باید شخصا فرایندی رو رو این برنامه ها پیاده کنیم تا در شبکه نیز قابل اجرا و استفاده باشند, متاسفانه من بجز چند دفعه از شبکه استفاده نکردم و چیزی حالیم نمی شه. _H2_06-03-2009, 02:57 PMسلام 1) بله یک سری توابع میخواهید ولی کلاسها و امکانات آماده در دات نت وجود دارد و نتیجتاً کد خیلی زیاد و پیچیده ای نخواهد شد. برای نمونه هم میتوانید به همان تاپیک مراجعه کنید. 2) طبیعتاً هر نوع رمزنگاری و فشرده سازی و الگوریتم های اضافه دیگر، موجب افزایش کند و کندتر شدن برنامه خواهند شد. برای رفع مشکل شما میتوانید تبدیلات بهتری انجام دهید و از رمز نگاری داده های نچندان مهم صرف نظر کنید. برنامه هایی ساده ای که ما در دات نت می نویسم (البته دارای بانکهای اطلاعاتی) در حالت عادی بر روی شبکه هم قابل اجرا هستند اگر به نکات ریزی دقت کنید، مشکلی به وجود نمی آید. 1- حتماً از بانک اطلاعاتی قوی شبکه ای مثل SQLServer استفاده کنید 2- راهی برای تغییر ConnectionString در پنجره تنظیمات برنامه قرار دهید. چهار پارامتر مهم برای اتصال SQLServer وجود دارد، 1)نام و یا ip سرو 2)نام دیتابی 3) نام کابری 4) رمزعبور که اگر بخواهید میتوانید هر چهار مورد را در تنظیمات از کاربر بگیرد و در حداقل شرایط هم باز باید امکانی برای وارد کردن دستی نام/ip سرور قرار دهید. 3) در برنامه های خود شرایط چند کاربره را مد نظر داشته باشید. مثلاً در چند تاپیک قبل دوستی گفته بود که میخواهد قبل از عملیات Insert در فرم مربوطه برنامه فیلد AutoNumber را تشخیص دهد و به کاربر نشان دهد... خوب به ظاهر ایرادی ندارد، SQLServer هم دستور ویژه ای برای این دانستن پیش از موعد Autonumber دارد... ولی این کار برای یک برنامه شبکه ای صحیح نیست! شما باید تفکر کامل و متعالی داشته باشید و به این فکر نکنید که حالا تو شرکت مد نظر ما مگر چند رایانه دارند که همزمان ... ! در یک برنامه شبکه ای شما حتی به محض گرفتن عدد بعدی Autonumber و بعد هم فوراً اجرای دستور INSERT باز نمیتوانید تضمین و ضمانتی داشته باشید که حتماً مقدار بعدی با همین عدد Autonumber درج شود، چه برسد به انکه بگذارید کاربر فیلدها و TexTbox های مربوطه را پر کند و چایی بخورد و بعد اگر دلش خواست دکمه Save را فشار دهد!!! در این زمان شاید چندین عملیات در شبکه در جریاتن باشند که زودتر دستور INSERT ای اجرا کنند و عدد Autonumber بعدی را از آن خود کنند! نتیجتاً راه منطقی آن است که بعد از فشار دکمه Save توسط کاربر، سپس اقدام به نمایش Autonumber درج شده سطرتان کنید. یا راه کمی غیر منطقی دیگر آن است که ... همان اول عمل INSERT را با مقادیر NULL انجام دهید و عدد تضمینی Autonumber را که دیگر تصاحب کرده اید نمایش دهید و بعد با فرمان Save کاربر یک عملیات UTE انجام دهید. ----- این فقط یک نمونه از مسائلی بود که باید در برنامه مد نظر داشته باشید، اگر کمی به این نکات ریز که به راحتی جلوی چشمانمان قرار دارد، دقت کنید، دیگر کارخاصی نمیخواهد و برنامه بانک اطلاعاتی شما به راحتی میتواند تحت شبکه کار کند. البته نوع دیگری از برنامه های شبکه ای برنامه های غیر بانکی اطلاعاتی هستند که کلاً حکایتی جدا دارند ... چت و بازی و... موفق باشید. _H2_07-03-2009, 12:21 PMسلام یک رمزنگاری داخلی هم SQLServer دارد که من تاحالا فکر میکردم مختص SQLServer2008 است و همان را هم وقت نکرده بودم بررسی و تست کنم ... ولی جناب bad_boy_2007 به نتایجی رسیده اند که در تاپیک زیر منتشر کرده اند: forum.p30world.com/showthread.php?t=292224 مرجع dotnetslackers.com/articles/sql/IntroductionToSQLServerEncryptionAndSymmetricKeyEn cryptionTutorial.aspx موفق باشید. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2199]