نمایش نتایج 1 تا 9 از 9

نام تاپیک: جلوگیری از تغییرات در فایل mdf

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    تو دل یه کویر بزرررگ، کنار یه بره کوچیییک
    پست
    232

    جلوگیری از تغییرات در فایل mdf

    سلام
    وقتی با vs2013 یه دیتابیسی ایجاد می کنیم، اون رو به صورت فایل mdf ایجاد میکنه، حالا میخواستم بدونم آیا میشه این فایل رو کاری کرد که وقتی به سیستم مشتری انتقال پیدا میکنه، مشتری نتونه بصورت دستی و از خارج از برنامه اطلاعات این فایل رو تغییر بده؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: جلوگیری از تغییرات در فایل mdf

    نقل قول نوشته شده توسط MRasoul مشاهده تاپیک
    سلام
    وقتی با vs2013 یه دیتابیسی ایجاد می کنیم، اون رو به صورت فایل mdf ایجاد میکنه، حالا میخواستم بدونم آیا میشه این فایل رو کاری کرد که وقتی به سیستم مشتری انتقال پیدا میکنه، مشتری نتونه بصورت دستی و از خارج از برنامه اطلاعات این فایل رو تغییر بده؟
    سلام
    دوست عزیز، این کار امکان‌پذیر نیست.
    mdf مربوط هست به فایل‌های استاندارد Data در SqlServer و هر کسی می‌تونه اون رو به سرور خودش Attach کرده و بازش کنه. ( البته اگه ورژن سرورش پایین‌تر نباشه )

    صبا صبوحی

  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    تو دل یه کویر بزرررگ، کنار یه بره کوچیییک
    پست
    232

    نقل قول: جلوگیری از تغییرات در فایل mdf

    نقل قول نوشته شده توسط SabaSabouhi مشاهده تاپیک
    سلام
    دوست عزیز، این کار امکان‌پذیر نیست.
    mdf مربوط هست به فایل‌های استاندارد Data در SqlServer و هر کسی می‌تونه اون رو به سرور خودش Attach کرده و بازش کنه. ( البته اگه ورژن سرورش پایین‌تر نباشه )

    صبا صبوحی
    سلام عزیزم
    ینی واقعا هیچ راهی نداره؟
    خب اینجور که خیلی بده! مثلا اگر یه رمز رو که نمیخوای کسی ببینه بذاری توی دیتا بیس که اینجور میتونن ببینندش

  4. #4
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: جلوگیری از تغییرات در فایل mdf

    نقل قول نوشته شده توسط MRasoul مشاهده تاپیک
    سلام عزیزم
    ینی واقعا هیچ راهی نداره؟
    خب اینجور که خیلی بده! مثلا اگر یه رمز رو که نمیخوای کسی ببینه بذاری توی دیتا بیس که اینجور میتونن ببینندش
    سلام
    خوب دوست من، خطای شما تو طرح صورت مساله هست.
    کی گفته شما باید رمز رو تو دیتابیس نگه‌داری کنی؟ شما رمز رو Hash کن و به همون صورت تو دیتابیس نگهداری کن.
    وقتی کاربر رمزش رو زد، دوباره اون رو Hash کن، اگه دو تا رمز Hash شده با هم یکی بودن، پس رمز درسته.
    من قبلاً بجای Hach کردن، CRC رمز رو نگه می‌داشتم، که البته تو منطق کار فرقی نداره. شما باید رمز رو با یک الگوریتم
    یکطرفه رمز کنی و تو دیتابیس نگهداری کنی.
    به همین راحتی

    صبا صبوحی

  5. #5
    کاربر دائمی آواتار golbafan
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    در قلب دوستان
    پست
    2,018

    نقل قول: جلوگیری از تغییرات در فایل mdf

    سلام میتونید کلیه داده های جداولتون رو بصورت انکریپت شده در جدول بریزید و برای نمایش دادن در نرم افزار خودتون دیکریپت کنید

    برای فیلد رمز هش مناسبه (چون فقط مقایسه میکنید) و برای سایر امور باید encrypt استفاده کنید


    https://msdn.microsoft.com/en-us/library/bb510663.aspx

  6. #6
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: جلوگیری از تغییرات در فایل mdf

    نقل قول نوشته شده توسط golbafan مشاهده تاپیک
    سلام میتونید کلیه داده های جداولتون رو بصورت انکریپت شده در جدول بریزید و برای نمایش دادن در نرم افزار خودتون دیکریپت کنید

    برای فیلد رمز هش مناسبه (چون فقط مقایسه میکنید) و برای سایر امور باید encrypt استفاده کنید


    https://msdn.microsoft.com/en-us/library/bb510663.aspx
    سلام
    یه زمانی تو یه جایی یه کامپیوتر MainFrame به ما معرفی کردن که 60 بیتی بود، بله 60 بیتی و نه 64 بیتی. دلیلش هم این بود که
    این کامپیوتر در رده‌ی نظامی بود و سیستمش رو غیر استاندارد طراحی کرده بودن برای مسائل امنیتی. ( مالک این کامپیوتر شرکت نفت بود )
    دوست عزیز، قرار نیست همه چیز رو رمز کنی. فقط رمز کاربرا کافیه.
    اگه قرار باشه به Admin اعتماد نداشته باشی که دیگه به‌تره کار رو رها کنی بری دنبال یه کار دیگه.
    بنا به تجربه این رو می‌گم که تو غالب شرکت‌ها دو نفر خیلی با وسواس انتخاب می‌شن
    یکی حسابدار ( یا مدیر مالی ) هست و دیگری Admin ( یا مدیر کامپیوتر یا IT یا هر اسم دیگه‌ای )
    این که باید رمز‌ها hash بشن هم دلیلش اینه که هیچ کارمندی نتونه ادعا کنه که یکی دیگه با رمزش وارد شده.

    اگر واقعاً سیستم تا این حد حساسه و هیچ نوع اعتمادی هم به Admin نمی‌تونی بکنی دو تا راه حل به ذهن من می‌رسه.
    1. استفاده از یه DBMS نامناسب مثل Access که می‌تونی رمزش کنی، اما خوب می‌دونی که برای یه کار متوسط به بالا واقعاً ضعیفه
    2. بجای این که با Encrypt و Decrypt نرم‌افراز رو کند کنی و هزینه‌ی تولید و پشتیبانی رو بالا ببری، مکانیزم تشخیص دستکاری ایجاد
    کن. روش‌های زیادی رو می‌تونی خودت خلق کنی.
    حتا می‌تونی با Trigger جلوی ثبت اطلاعات خارج از برنامه رو بگیری. البته یه کم دردسر داره، اما امکان‌پذیره. من تو یه نرم‌افزار که خیلی
    حساس بود، این کار رو کردم. به هیچ عنوان از طریق غیر از برنامه نمی‌شد تو دیتابیس اطلاعات رو دستکاری کرد. همه چیز رو Rollback
    می‌کردم. ( کار بی‌خودی بود، اما با توجه به شرایط ویژه پروژه ارزشش رو داشت )

    صبا صبوحی

  7. #7
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    تو دل یه کویر بزرررگ، کنار یه بره کوچیییک
    پست
    232

    نقل قول: جلوگیری از تغییرات در فایل mdf

    نقل قول نوشته شده توسط SabaSabouhi مشاهده تاپیک
    سلام
    خوب دوست من، خطای شما تو طرح صورت مساله هست.
    کی گفته شما باید رمز رو تو دیتابیس نگه‌داری کنی؟ شما رمز رو Hash کن و به همون صورت تو دیتابیس نگهداری کن.
    وقتی کاربر رمزش رو زد، دوباره اون رو Hash کن، اگه دو تا رمز Hash شده با هم یکی بودن، پس رمز درسته.
    من قبلاً بجای Hach کردن، CRC رمز رو نگه می‌داشتم، که البته تو منطق کار فرقی نداره. شما باید رمز رو با یک الگوریتم
    یکطرفه رمز کنی و تو دیتابیس نگهداری کنی.
    به همین راحتی

    صبا صبوحی
    منم رمزهام رو hash کردم، اینجور الان گفتم منظورم این بود که یه چیز مهم رو نخوایی دستی تغییر بدن و حتما از برنامه تغییر کنه باید چکار کرد؟
    بازم تشکر

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: جلوگیری از تغییرات در فایل mdf

    نقل قول نوشته شده توسط MRasoul مشاهده تاپیک
    منم رمزهام رو hash کردم، اینجور الان گفتم منظورم این بود که یه چیز مهم رو نخوایی دستی تغییر بدن و حتما از برنامه تغییر کنه باید چکار کرد؟
    بازم تشکر
    سلام
    یه راه حل اینه:
    توی Trigger می‌تونی userid رو چک کنی. منظور همون userid هست که باهاش به دیتابیس connect شدی.
    از یه username خاص استفاده کن، توی Trigger اگه کاربری غیر از این کاربر تغییری اعمال کرد Rollback کن.
    رمز این کاربر رو هم فقط تو source برنامه باشه. اگه هم کسی بفهمه که قضیه چیه و دستی رمز اون کاربر
    رو عوض کنه برای دستکاری تو اطلاعات، برنامه دیگه نمی‌تونه به دیتابیس وصل بشه و . . .
    حداقلش اینه که مشخص می‌شه کسی خواسته دستکاری کنه.

    صبا صبوحی

  9. #9
    کاربر دائمی آواتار golbafan
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    در قلب دوستان
    پست
    2,018
    نقل قول نوشته شده توسط SabaSabouhi مشاهده تاپیک
    بجای این که با Encrypt و Decrypt نرم‌افراز رو کند کنی و هزینه‌ی تولید و پشتیبانی رو بالا ببری، مکانیزم تشخیص دستکاری ایجاد
    کن. روش‌های زیادی رو می‌تونی خودت خلق کنی
    سلام
    رمزنگاری دیتابیس الان دیگه یکی از قسمت های معمول sqlserver هست و هیچ هزینه ای نداره (حد اقل کم هزینه تر از ایجاد یک مکانیزم جدیده)

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

    اینجوری دیگه نیازی به اجرای تریگرهای مختلف و انجام rollback نیست (پس هزینه ها کمتر میشه برادر من)

    در ضمن اونچه من گفتم چیز من درآوردی که نبود... بلکه توصیه خود ماکروسافت بود برای کاربا sqlserver اش
    توصیه میکنم مطالعه شود:
    https://msdn.microsoft.com/en-us/library/ms189586.aspx


    نقل قول نوشته شده توسط SabaSabouhi مشاهده تاپیک
    این که باید رمز‌ها hash بشن هم دلیلش اینه که هیچ کارمندی نتونه ادعا کنه که یکی دیگه با رمزش وارد شده.
    البته بنده هم ذکر کردم که بهتره فیلدهای مقایسه ای (مثل رمز) هش بشن چون برگشت اونها به حالت اول اهمیت نداره
    اما وقتی شما مساله ادعا رو مطرح کردید...
    عجب!!!

    مثلا اگر انکریپت بشه کسی میتونه این ادعا رو بکنه؟؟؟


    نقل قول نوشته شده توسط SabaSabouhi مشاهده تاپیک
    حتا می‌تونی با Trigger جلوی ثبت اطلاعات خارج از برنامه رو بگیری. البته یه کم دردسر داره، اما امکان‌پذیره. من تو یه نرم‌افزار که خیلی
    حساس بود، این کار رو کردم. به هیچ عنوان از طریق غیر از برنامه نمی‌شد تو دیتابیس اطلاعات رو دستکاری کرد. همه چیز رو Rollback
    می‌کردم. ( کار بی‌خودی بود، اما با توجه به شرایط ویژه پروژه ارزشش رو داشت )
    خدارو شکر قبول دارید روش شما دردسر داره و کار بیخودی بوده

    البته کسی هم اگر میخواست میتونست این تریگر رو غیر فعال کنه (کاربر ادمین sql)
    آخرین ویرایش به وسیله محمد آشتیانی : یک شنبه 03 اسفند 1393 در 01:36 صبح

تاپیک های مشابه

  1. سوال: جلوگیری از باز شدن فایل بانک اطلاعاتی (MDF) در حالت Express
    نوشته شده توسط samsami در بخش C#‎‎
    پاسخ: 3
    آخرین پست: جمعه 11 بهمن 1392, 14:06 عصر
  2. پاسخ: 3
    آخرین پست: چهارشنبه 17 فروردین 1390, 02:29 صبح
  3. جلوگیری از باز شدن فایل MDF
    نوشته شده توسط mahdi_farhani در بخش SQL Server
    پاسخ: 5
    آخرین پست: جمعه 07 دی 1386, 13:09 عصر
  4. امنیت فایل MDF در SQL 2000
    نوشته شده توسط FirstLine در بخش SQL Server
    پاسخ: 5
    آخرین پست: چهارشنبه 17 دی 1382, 01:02 صبح
  5. ایجاد تغییرات در فایل Global.asax هنگام کار در وب ماتریکس
    نوشته شده توسط faramarz_s در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: چهارشنبه 14 آبان 1382, 20:31 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •